
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

MagickBooleanType
InterpolatePixelChannels
          (Image *source,CacheView_ *source_view,Image *destination,PixelInterpolateMethod method,
          double x,double y,Quantum *pixel,ExceptionInfo *exception)

{
  double *pdVar1;
  float fVar2;
  PixelChannel PVar3;
  PixelTrait PVar4;
  long lVar5;
  PixelChannelMap *pPVar6;
  PixelChannelMap *pPVar7;
  long lVar8;
  float fVar9;
  float fVar10;
  ulong uVar11;
  float fVar12;
  MagickBooleanType MVar13;
  size_t sVar14;
  Quantum *pQVar15;
  long lVar16;
  double *pdVar17;
  long lVar18;
  float *pfVar19;
  long lVar20;
  Quantum *pQVar21;
  PixelTrait PVar22;
  ssize_t x_00;
  long in_FS_OFFSET;
  double dVar23;
  double dVar24;
  double dVar25;
  double dVar26;
  double dVar27;
  double dVar28;
  double dVar29;
  double dVar30;
  double dVar31;
  double dVar32;
  double dVar33;
  double dVar34;
  double local_178;
  double local_170;
  ssize_t local_168;
  double local_160;
  double alpha [16];
  double pixels [16];
  
  lVar5 = *(long *)(in_FS_OFFSET + 0x28);
  if (source == (Image *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")
    ;
  }
  if (source->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,
                  "InterpolatePixelChannels");
  }
  if (source_view == (CacheView_ *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,
                  "InterpolatePixelChannels");
  }
  dVar23 = DAT_004294e8;
  if (DAT_004294e8 <= x) {
    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |
                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x);
  }
  dVar23 = floor(dVar23);
  x_00 = (ssize_t)dVar23;
  dVar23 = DAT_004294e8;
  if (DAT_004294e8 <= y) {
    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |
                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y);
  }
  dVar23 = floor(dVar23);
  local_168 = (ssize_t)dVar23;
  if (method == UndefinedInterpolatePixel) {
    method = source->interpolate;
  }
  local_178 = x;
  local_170 = y;
  switch(method) {
  default:
    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);
    dVar23 = DAT_003f9608;
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      sVar14 = source->number_channels;
      if ((long)sVar14 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        lVar20 = 0;
        do {
          pPVar6 = source->channel_map;
          PVar3 = pPVar6[lVar20].channel;
          pPVar7 = destination->channel_map;
          PVar22 = pPVar7[PVar3].traits;
          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {
            dVar28 = x - (double)x_00;
            dVar31 = y - (double)local_168;
            dVar29 = dVar23 - dVar28;
            dVar32 = dVar23 - dVar31;
            lVar16 = lVar20 + sVar14 * 2;
            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {
              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;
              dVar25 = DAT_003f9c68;
              if (0.0 <= dVar24) {
                dVar25 = DAT_003f9608;
              }
              if (dVar25 * dVar24 < DAT_003f9600) {
                dVar24 = dVar25 / DAT_003f9600;
              }
              else {
                dVar24 = DAT_003f9608 / dVar24;
              }
              if (PVar22 != UndefinedPixelTrait) {
                pixel[pPVar7[PVar3].offset] =
                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +
                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +
                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +
                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);
              }
            }
            else {
              dVar30 = DAT_003f9608;
              dVar25 = dVar23;
              dVar24 = dVar23;
              fVar10 = _DAT_003fa400;
              if (pPVar6[4].traits != UndefinedPixelTrait) {
                lVar18 = pPVar6[4].offset;
                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;
                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;
                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;
                fVar10 = pQVar15[sVar14 * 3 + lVar18];
              }
              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +
                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;
              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |
                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);
              if (dVar33 * dVar26 < DAT_003f9600) {
                dVar26 = dVar33 / DAT_003f9600;
              }
              else {
                dVar26 = DAT_003f9608 / dVar26;
              }
              if (PVar22 != UndefinedPixelTrait) {
                pixel[pPVar7[PVar3].offset] =
                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +
                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)
                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *
                                                           (double)pQVar15[lVar16 + sVar14] +
                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));
              }
            }
          }
          lVar20 = lVar20 + 1;
          sVar14 = source->number_channels;
        } while (lVar20 < (long)sVar14);
        MVar13 = MagickTrue;
      }
    }
    break;
  case AverageInterpolatePixel:
  case Average9InterpolatePixel:
  case Average16InterpolatePixel:
    if (method == Average9InterpolatePixel) {
      if (x < DAT_004294e8) {
        local_178 = DAT_004294e8;
      }
      else if (DAT_004294f0 < x) {
        local_178 = DAT_004294f0;
      }
      local_178 = local_178 + DAT_003f9c28;
      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {
        local_178 = (double)((ulong)((double)(long)local_178 -
                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &
                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178
                            );
      }
      x_00 = (ssize_t)(local_178 - DAT_003f9608);
      if (y < DAT_004294e8) {
        local_170 = DAT_004294e8;
      }
      else if (DAT_004294f0 < y) {
        local_170 = DAT_004294f0;
      }
      local_170 = local_170 + DAT_003f9c28;
      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {
        local_170 = (double)((ulong)((double)(long)local_170 -
                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &
                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170
                            );
      }
      local_168 = (ssize_t)(local_170 - DAT_003f9608);
      sVar14 = 3;
    }
    else {
      sVar14 = 2;
      if (method == Average16InterpolatePixel) {
        x_00 = x_00 + -1;
        local_168 = local_168 + -1;
        sVar14 = 4;
      }
    }
    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);
    dVar29 = DAT_003f9c68;
    dVar28 = DAT_003f9c60;
    dVar23 = DAT_003f9608;
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      lVar20 = sVar14 * sVar14;
      sVar14 = source->number_channels;
      if ((long)sVar14 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        pdVar1 = pixels + lVar20;
        lVar16 = 0;
        do {
          pPVar6 = source->channel_map;
          PVar3 = pPVar6[lVar16].channel;
          PVar22 = pPVar6[PVar3].traits;
          pPVar7 = destination->channel_map;
          PVar4 = pPVar7[PVar3].traits;
          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {
            if (lVar20 == 0) {
              dVar31 = 0.0;
              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {
                dVar31 = 0.0;
                goto LAB_00253e49;
              }
            }
            else {
              pfVar19 = pQVar15 + lVar16;
              pdVar17 = pixels;
              do {
                *pdVar17 = (double)*pfVar19;
                pfVar19 = pfVar19 + sVar14;
                pdVar17 = pdVar17 + 1;
              } while (pdVar1 != pdVar17);
              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {
                lVar18 = 0;
                dVar31 = 0.0;
                do {
                  dVar31 = dVar31 + pixels[lVar18];
                  lVar18 = lVar18 + 1;
                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);
LAB_00253e49:
                if (PVar4 != UndefinedPixelTrait) {
                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);
                }
                goto LAB_0025586a;
              }
              PVar22 = pPVar6[4].traits;
              lVar18 = 0;
              dVar31 = 0.0;
              pdVar17 = pixels;
              do {
                if (PVar22 == UndefinedPixelTrait) {
                  dVar32 = *pdVar17;
                  dVar25 = dVar23;
LAB_00255912:
                  dVar24 = dVar23 / dVar25;
                }
                else {
                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;
                  dVar32 = dVar25 * *pdVar17;
                  *pdVar17 = dVar32;
                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |
                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);
                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;
                  dVar24 = dVar24 / DAT_003f9600;
                }
                dVar31 = dVar31 + dVar32 * dVar24;
                lVar18 = lVar18 + sVar14;
                pdVar17 = pdVar17 + 1;
              } while (pdVar17 != pdVar1);
            }
            if (PVar4 != UndefinedPixelTrait) {
              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);
            }
          }
LAB_0025586a:
          lVar16 = lVar16 + 1;
          sVar14 = source->number_channels;
        } while (lVar16 < (long)sVar14);
        MVar13 = MagickTrue;
      }
    }
    break;
  case BlendInterpolatePixel:
    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);
    dVar29 = _DAT_004294f8;
    fVar10 = _DAT_003fa400;
    dVar28 = DAT_003f9608;
    dVar23 = DAT_003f9600;
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      sVar14 = source->number_channels;
      if ((long)sVar14 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        lVar20 = 0;
        pQVar21 = pQVar15;
        do {
          pPVar6 = source->channel_map;
          PVar3 = pPVar6[lVar20].channel;
          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&
             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {
            if (source->alpha_trait == BlendPixelTrait) {
              PVar22 = pPVar6[4].traits;
              lVar18 = 0;
              lVar16 = 0;
              do {
                fVar2 = fVar10;
                if (PVar22 != UndefinedPixelTrait) {
                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];
                }
                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;
                if (PVar3 == AlphaPixelChannel) {
                  pixels[lVar16] = (double)pQVar21[lVar18];
                }
                else {
                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];
                }
                lVar16 = lVar16 + 1;
                lVar18 = lVar18 + sVar14;
              } while (lVar16 != 4);
            }
            else {
              lVar16 = 0;
              pfVar19 = pQVar21;
              do {
                alpha[lVar16] = DAT_003f9608;
                pixels[lVar16] = (double)*pfVar19;
                lVar16 = lVar16 + 1;
                pfVar19 = pfVar19 + sVar14;
              } while (lVar16 != 4);
            }
            dVar32 = y - (double)local_168;
            dVar31 = DAT_003f9608;
            if (dVar29 <= dVar32) {
              alpha[0] = alpha[2];
              pixels[0] = pixels[2];
LAB_00254349:
              alpha[1] = alpha[3];
              pixels[1] = pixels[3];
            }
            else if (dVar32 <= DAT_00407738) {
              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;
              if (DAT_00407738 < dVar32) goto LAB_002544fd;
            }
            else {
              alpha[0] = alpha[0] + alpha[2];
              pixels[0] = pixels[0] + pixels[2];
              dVar31 = DAT_00407728;
              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;
LAB_002544fd:
              alpha[1] = alpha[1] + alpha[3];
              pixels[1] = pixels[1] + pixels[3];
              dVar31 = DAT_00407728;
            }
            if (x - (double)x_00 < dVar29) {
              if (DAT_00407738 < x - (double)x_00) {
                dVar31 = dVar31 + dVar31;
                alpha[0] = alpha[0] + alpha[1];
                pixels[0] = pixels[0] + pixels[1];
              }
            }
            else {
              alpha[0] = alpha[1];
              pixels[0] = pixels[1];
            }
            if (PVar3 == AlphaPixelChannel) {
              dVar32 = DAT_003fa390;
              if (dVar23 <= dVar31) {
                dVar32 = dVar28 / dVar31;
              }
            }
            else {
              dVar31 = DAT_003f9c68;
              if (0.0 <= alpha[0]) {
                dVar31 = DAT_003f9608;
              }
              if (alpha[0] * dVar31 < dVar23) {
                dVar32 = dVar31 / dVar23;
              }
              else {
                dVar32 = DAT_003f9608 / alpha[0];
              }
            }
            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {
              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);
            }
          }
          lVar20 = lVar20 + 1;
          sVar14 = source->number_channels;
          pQVar21 = pQVar21 + 1;
        } while (lVar20 < (long)sVar14);
        MVar13 = MagickTrue;
      }
    }
    break;
  case CatromInterpolatePixel:
    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);
    dVar28 = DAT_00406598;
    fVar10 = _DAT_003fa400;
    dVar23 = DAT_003f9608;
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      sVar14 = source->number_channels;
      if ((long)sVar14 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        lVar20 = 0;
        pQVar21 = pQVar15;
        do {
          pPVar6 = source->channel_map;
          PVar3 = pPVar6[lVar20].channel;
          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&
             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {
            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;
            if (PVar22 == UndefinedPixelTrait) {
              lVar16 = 0;
              pfVar19 = pQVar21;
              do {
                alpha[lVar16] = DAT_003f9608;
                pixels[lVar16] = (double)*pfVar19;
                lVar16 = lVar16 + 1;
                pfVar19 = pfVar19 + sVar14;
              } while (lVar16 != 0x10);
            }
            else {
              PVar4 = pPVar6[4].traits;
              lVar18 = 0;
              lVar16 = 0;
              do {
                fVar2 = fVar10;
                if (PVar4 != UndefinedPixelTrait) {
                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];
                }
                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;
                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];
                lVar16 = lVar16 + 1;
                lVar18 = lVar18 + sVar14;
              } while (lVar16 != 0x10);
            }
            dVar25 = x - (double)x_00;
            dVar29 = dVar23 - dVar25;
            dVar31 = dVar25 * dVar28 * dVar29;
            dVar24 = dVar29 * dVar31;
            dVar31 = dVar31 * dVar25;
            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);
            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);
            dVar29 = y - (double)local_168;
            dVar30 = dVar23 - dVar29;
            dVar26 = dVar29 * dVar28 * dVar30;
            dVar25 = dVar30 * dVar26;
            dVar26 = dVar26 * dVar29;
            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);
            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);
            dVar29 = DAT_003f9608;
            if (PVar22 == UndefinedPixelTrait) {
              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +
                       dVar31 * alpha[0xb]) * dVar30 +
                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +
                       dVar31 * alpha[3]) * dVar25 +
                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +
                       dVar31 * alpha[7]) * dVar34 +
                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +
                       dVar31 * alpha[0xf]) * dVar26;
              dVar27 = DAT_003f9c68;
              if (0.0 <= dVar29) {
                dVar27 = DAT_003f9608;
              }
              if (dVar29 * dVar27 < DAT_003f9600) {
                dVar29 = dVar27 / DAT_003f9600;
              }
              else {
                dVar29 = DAT_003f9608 / dVar29;
              }
            }
            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {
              pixel[destination->channel_map[PVar3].offset] =
                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +
                                     dVar31 * pixels[3]) +
                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +
                            dVar31 * pixels[7]) * dVar34 +
                            dVar30 * (dVar31 * pixels[0xb] +
                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])
                           + (dVar31 * pixels[0xf] +
                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *
                             dVar26) * dVar29);
            }
          }
          lVar20 = lVar20 + 1;
          sVar14 = source->number_channels;
          pQVar21 = pQVar21 + 1;
        } while (lVar20 < (long)sVar14);
        MVar13 = MagickTrue;
      }
    }
    break;
  case IntegerInterpolatePixel:
    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      if ((long)source->number_channels < 1) {
        MVar13 = MagickTrue;
      }
      else {
        lVar20 = 0;
        do {
          PVar3 = source->channel_map[lVar20].channel;
          pPVar6 = destination->channel_map;
          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&
              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&
             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {
            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];
          }
          lVar20 = lVar20 + 1;
        } while (lVar20 < (long)source->number_channels);
        MVar13 = MagickTrue;
      }
    }
    break;
  case MeshInterpolatePixel:
    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);
    fVar12 = DAT_0041abe0;
    fVar2 = DAT_0041abdc;
    fVar10 = DAT_0041abd8;
    uVar11 = DAT_003f9c70;
    dVar23 = DAT_003f9608;
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      sVar14 = source->number_channels;
      if ((long)sVar14 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        lVar20 = 0;
        do {
          pPVar6 = source->channel_map;
          PVar3 = pPVar6[lVar20].channel;
          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&
             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {
            dVar25 = (double)pQVar15[lVar20];
            dVar31 = (double)pQVar15[lVar20 + sVar14];
            lVar16 = lVar20 + sVar14 * 2;
            dVar32 = (double)pQVar15[lVar16];
            dVar29 = (double)pQVar15[lVar16 + sVar14];
            dVar28 = dVar23;
            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {
              local_160 = dVar23;
              dVar30 = DAT_003f9608;
              dVar24 = dVar23;
            }
            else {
              if (pPVar6[4].traits == UndefinedPixelTrait) {
                local_160 = dVar23;
                dVar24 = DAT_003f9608;
                fVar9 = _DAT_003fa400;
              }
              else {
                lVar16 = pPVar6[4].offset;
                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;
                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;
                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;
                fVar9 = pQVar15[sVar14 * 3 + lVar16];
              }
              dVar30 = (double)fVar9 * DAT_003f9c60;
            }
            dVar33 = x - (double)x_00;
            dVar26 = y - (double)local_168;
            pPVar6 = source->channel_map;
            lVar16 = pPVar6->offset;
            lVar18 = pPVar6[1].offset;
            lVar8 = pPVar6[2].offset;
            sVar14 = source->number_channels;
            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +
                                         fVar10 * pQVar15[sVar14 + lVar16] +
                                         fVar2 * pQVar15[sVar14 + lVar18]) -
                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +
                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +
                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=
                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +
                                         fVar12 * pQVar15[lVar8]) -
                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +
                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +
                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {
              dVar34 = DAT_003f9608 - dVar26;
              if (dVar34 < dVar33) {
                dVar33 = DAT_003f9608 - dVar33;
                dVar25 = (DAT_003f9608 - dVar33) - dVar34;
                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;
                dVar28 = DAT_003f9c68;
                if (0.0 <= dVar24) {
                  dVar28 = DAT_003f9608;
                }
                if (dVar28 * dVar24 < DAT_003f9600) {
                  dVar24 = dVar28 / DAT_003f9600;
                }
                else {
                  dVar24 = DAT_003f9608 / dVar24;
                }
                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {
                  pixel[destination->channel_map[PVar3].offset] =
                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);
                }
              }
              else {
                dVar29 = (DAT_003f9608 - dVar33) - dVar26;
                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;
                dVar28 = DAT_003f9c68;
                if (0.0 <= dVar24) {
                  dVar28 = DAT_003f9608;
                }
                if (dVar28 * dVar24 < DAT_003f9600) {
                  dVar24 = dVar28 / DAT_003f9600;
                }
                else {
                  dVar24 = DAT_003f9608 / dVar24;
                }
                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {
                  pixel[destination->channel_map[PVar3].offset] =
                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));
                }
              }
            }
            else if (dVar26 < dVar33) {
              dVar33 = DAT_003f9608 - dVar33;
              dVar32 = (DAT_003f9608 - dVar33) - dVar26;
              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;
              dVar28 = DAT_003f9c68;
              if (0.0 <= dVar24) {
                dVar28 = DAT_003f9608;
              }
              if (dVar28 * dVar24 < DAT_003f9600) {
                dVar24 = dVar28 / DAT_003f9600;
              }
              else {
                dVar24 = DAT_003f9608 / dVar24;
              }
              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {
                pixel[destination->channel_map[PVar3].offset] =
                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);
              }
            }
            else {
              dVar26 = DAT_003f9608 - dVar26;
              dVar31 = (DAT_003f9608 - dVar33) - dVar26;
              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;
              dVar28 = DAT_003f9c68;
              if (0.0 <= dVar24) {
                dVar28 = DAT_003f9608;
              }
              if (dVar28 * dVar24 < DAT_003f9600) {
                dVar24 = dVar28 / DAT_003f9600;
              }
              else {
                dVar24 = DAT_003f9608 / dVar24;
              }
              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {
                pixel[destination->channel_map[PVar3].offset] =
                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));
              }
            }
          }
          lVar20 = lVar20 + 1;
          sVar14 = source->number_channels;
        } while (lVar20 < (long)sVar14);
        MVar13 = MagickTrue;
      }
    }
    break;
  case NearestInterpolatePixel:
    if (x < DAT_004294e8) {
      local_178 = DAT_004294e8;
    }
    else if (DAT_004294f0 < x) {
      local_178 = DAT_004294f0;
    }
    dVar23 = floor(local_178 + DAT_003f9c28);
    if (y < DAT_004294e8) {
      local_170 = DAT_004294e8;
    }
    else if (DAT_004294f0 < y) {
      local_170 = DAT_004294f0;
    }
    dVar28 = floor(local_170 + DAT_003f9c28);
    pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      if ((long)source->number_channels < 1) {
        MVar13 = MagickTrue;
      }
      else {
        lVar20 = 0;
        do {
          PVar3 = source->channel_map[lVar20].channel;
          pPVar6 = destination->channel_map;
          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&
              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&
             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {
            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];
          }
          lVar20 = lVar20 + 1;
        } while (lVar20 < (long)source->number_channels);
        MVar13 = MagickTrue;
      }
    }
    break;
  case SplineInterpolatePixel:
    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);
    dVar28 = DAT_0041d760;
    fVar10 = _DAT_003fa400;
    dVar23 = DAT_003f9608;
    MVar13 = MagickFalse;
    if (pQVar15 != (Quantum *)0x0) {
      sVar14 = source->number_channels;
      if ((long)sVar14 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        lVar20 = 0;
        pQVar21 = pQVar15;
        do {
          pPVar6 = source->channel_map;
          PVar3 = pPVar6[lVar20].channel;
          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&
             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {
            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;
            if (PVar22 == UndefinedPixelTrait) {
              lVar16 = 0;
              pfVar19 = pQVar21;
              do {
                alpha[lVar16] = DAT_003f9608;
                pixels[lVar16] = (double)*pfVar19;
                lVar16 = lVar16 + 1;
                pfVar19 = pfVar19 + sVar14;
              } while (lVar16 != 0x10);
            }
            else {
              PVar4 = pPVar6[4].traits;
              lVar18 = 0;
              lVar16 = 0;
              do {
                fVar2 = fVar10;
                if (PVar4 != UndefinedPixelTrait) {
                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];
                }
                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;
                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];
                lVar16 = lVar16 + 1;
                lVar18 = lVar18 + sVar14;
              } while (lVar16 != 0x10);
            }
            dVar31 = x - (double)x_00;
            dVar29 = dVar23 - dVar31;
            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;
            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;
            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);
            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);
            dVar31 = y - (double)local_168;
            dVar33 = dVar23 - dVar31;
            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;
            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;
            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);
            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);
            dVar31 = DAT_003f9608;
            if (PVar22 == UndefinedPixelTrait) {
              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +
                       dVar32 * alpha[7]) * dVar34 +
                       (dVar32 * alpha[3] +
                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +
                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +
                       dVar32 * alpha[0xb]) * dVar33 +
                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +
                       dVar32 * alpha[0xf]) * dVar26;
              dVar27 = DAT_003f9c68;
              if (0.0 <= dVar31) {
                dVar27 = DAT_003f9608;
              }
              if (dVar31 * dVar27 < DAT_003f9600) {
                dVar31 = dVar27 / DAT_003f9600;
              }
              else {
                dVar31 = DAT_003f9608 / dVar31;
              }
            }
            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {
              pixel[destination->channel_map[PVar3].offset] =
                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +
                                     dVar32 * pixels[7]) +
                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +
                                     dVar32 * pixels[3]) +
                            dVar33 * (dVar32 * pixels[0xb] +
                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])
                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +
                             dVar32 * pixels[0xf]) * dVar26) * dVar31);
            }
          }
          lVar20 = lVar20 + 1;
          sVar14 = source->number_channels;
          pQVar21 = pQVar21 + 1;
        } while (lVar20 < (long)sVar14);
        MVar13 = MagickTrue;
      }
    }
  }
  if (lVar5 == *(long *)(in_FS_OFFSET + 0x28)) {
    return MVar13;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8
InterpolatePixelChannels
          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,
          long param_7,undefined8 param_8)

{
  double *pdVar1;
  float fVar2;
  int iVar3;
  int iVar4;
  long lVar5;
  long lVar6;
  long lVar7;
  float fVar8;
  float fVar9;
  double dVar10;
  ulong uVar11;
  float fVar12;
  long lVar13;
  undefined8 uVar14;
  float *pfVar15;
  double *pdVar16;
  long lVar17;
  long lVar18;
  float *pfVar19;
  long lVar20;
  float *pfVar21;
  long lVar22;
  uint uVar23;
  long lVar24;
  long lVar25;
  long in_FS_OFFSET;
  double dVar26;
  double dVar27;
  double dVar28;
  double dVar29;
  double dVar30;
  double dVar31;
  double dVar32;
  double dVar33;
  double dVar34;
  double dVar35;
  double dVar36;
  double dVar37;
  double dVar38;
  double local_178;
  double local_170;
  long local_168;
  double local_160;
  double local_148 [16];
  double local_c8 [17];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")
    ;
  }
  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,
                  "InterpolatePixelChannels");
  }
  if (param_4 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,
                  "InterpolatePixelChannels");
  }
  dVar26 = DAT_004294e8;
  if (DAT_004294e8 <= param_1) {
    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |
                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);
  }
  dVar26 = floor(dVar26);
  lVar25 = (long)dVar26;
  dVar26 = DAT_004294e8;
  if (DAT_004294e8 <= param_2) {
    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |
                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);
  }
  dVar26 = floor(dVar26);
  local_168 = (long)dVar26;
  if (param_6 == 0) {
    param_6 = *(int *)(param_3 + 0x2f8);
  }
  local_178 = param_1;
  local_170 = param_2;
  switch(param_6) {
  default:
    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (lVar13 != 0) {
      lVar24 = *(long *)(param_3 + 0x340);
      if (lVar24 < 1) {
        uVar14 = 1;
      }
      else {
        lVar20 = 0;
        do {
          lVar18 = *(long *)(param_3 + 0x360);
          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar18 + 4 + lVar17);
          lVar17 = lVar17 + *(long *)(param_5 + 0x360);
          iVar3 = *(int *)(lVar17 + 4);
          if ((uVar23 != 0) && (iVar3 != 0)) {
            dVar31 = param_1 - (double)lVar25;
            dVar34 = param_2 - (double)local_168;
            dVar32 = dVar26 - dVar31;
            dVar37 = dVar26 - dVar34;
            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);
            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);
            lVar22 = lVar20 + lVar24 * 2;
            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);
            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);
            if ((uVar23 & 4) == 0) {
              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;
              dVar38 = DAT_003f9c68;
              if (0.0 <= dVar27) {
                dVar38 = DAT_003f9608;
              }
              if (dVar38 * dVar27 < DAT_003f9600) {
                dVar27 = dVar38 / DAT_003f9600;
              }
              else {
                dVar27 = DAT_003f9608 / dVar27;
              }
              if (iVar3 != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +
                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);
              }
            }
            else {
              dVar30 = DAT_003f9608;
              dVar38 = dVar26;
              dVar27 = dVar26;
              fVar9 = _DAT_003fa400;
              if (*(int *)(lVar18 + 0x44) != 0) {
                lVar22 = *(long *)(lVar18 + 0x48) * 4;
                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;
                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;
                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;
                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);
              }
              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +
                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;
              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |
                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);
              if (dVar10 * dVar29 < DAT_003f9600) {
                dVar29 = dVar10 / DAT_003f9600;
              }
              else {
                dVar29 = DAT_003f9608 / dVar29;
              }
              if (iVar3 != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31
                                                ) +
                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +
                                               dVar32 * dVar33 * dVar30)));
              }
            }
          }
          lVar20 = lVar20 + 1;
          lVar24 = *(long *)(param_3 + 0x340);
        } while (lVar20 < lVar24);
        uVar14 = 1;
      }
    }
    break;
  case 1:
  case 2:
  case 3:
    if (param_6 == 2) {
      if (param_1 < DAT_004294e8) {
        local_178 = DAT_004294e8;
      }
      else if (DAT_004294f0 < param_1) {
        local_178 = DAT_004294f0;
      }
      local_178 = local_178 + DAT_003f9c28;
      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {
        local_178 = (double)((ulong)((double)(long)local_178 -
                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &
                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178
                            );
      }
      lVar25 = (long)(local_178 - DAT_003f9608);
      if (param_2 < DAT_004294e8) {
        local_170 = DAT_004294e8;
      }
      else if (DAT_004294f0 < param_2) {
        local_170 = DAT_004294f0;
      }
      local_170 = local_170 + DAT_003f9c28;
      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {
        local_170 = (double)((ulong)((double)(long)local_170 -
                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &
                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170
                            );
      }
      local_168 = (long)(local_170 - DAT_003f9608);
      lVar13 = 3;
    }
    else {
      lVar13 = 2;
      if (param_6 == 3) {
        lVar25 = lVar25 + -1;
        local_168 = local_168 + -1;
        lVar13 = 4;
      }
    }
    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);
    dVar31 = DAT_003f9c68;
    dVar28 = DAT_003f9c60;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (lVar25 != 0) {
      lVar13 = lVar13 * lVar13;
      lVar24 = *(long *)(param_3 + 0x340);
      if (lVar24 < 1) {
        uVar14 = 1;
      }
      else {
        pdVar1 = local_c8 + lVar13;
        lVar20 = 0;
        do {
          lVar18 = *(long *)(param_3 + 0x360);
          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar18 + 4 + lVar17);
          lVar17 = lVar17 + *(long *)(param_5 + 0x360);
          iVar3 = *(int *)(lVar17 + 4);
          if ((uVar23 != 0) && (iVar3 != 0)) {
            if (lVar13 == 0) {
              dVar32 = 0.0;
              if ((uVar23 & 4) == 0) {
                dVar32 = 0.0;
                goto LAB_00253e49;
              }
            }
            else {
              pfVar15 = (float *)(lVar25 + lVar20 * 4);
              pdVar16 = local_c8;
              do {
                *pdVar16 = (double)*pfVar15;
                pfVar15 = pfVar15 + lVar24;
                pdVar16 = pdVar16 + 1;
              } while (pdVar1 != pdVar16);
              if ((uVar23 & 4) == 0) {
                lVar24 = 0;
                dVar32 = 0.0;
                do {
                  dVar32 = dVar32 + local_c8[lVar24];
                  lVar24 = lVar24 + 1;
                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);
LAB_00253e49:
                if (iVar3 != 0) {
                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)
                  ;
                }
                goto LAB_0025586a;
              }
              iVar4 = *(int *)(lVar18 + 0x44);
              lVar22 = 0;
              dVar32 = 0.0;
              pdVar16 = local_c8;
              do {
                if (iVar4 == 0) {
                  dVar33 = *pdVar16;
                  dVar34 = dVar26;
LAB_00255912:
                  dVar35 = dVar26 / dVar34;
                }
                else {
                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *
                           dVar28;
                  dVar33 = dVar34 * *pdVar16;
                  *pdVar16 = dVar33;
                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |
                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);
                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;
                  dVar35 = dVar35 / DAT_003f9600;
                }
                dVar32 = dVar32 + dVar33 * dVar35;
                lVar22 = lVar22 + lVar24;
                pdVar16 = pdVar16 + 1;
              } while (pdVar16 != pdVar1);
            }
            if (iVar3 != 0) {
              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);
            }
          }
LAB_0025586a:
          lVar20 = lVar20 + 1;
          lVar24 = *(long *)(param_3 + 0x340);
        } while (lVar20 < lVar24);
        uVar14 = 1;
      }
    }
    break;
  case 6:
    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);
    dVar31 = _DAT_004294f8;
    fVar9 = _DAT_003fa400;
    dVar28 = DAT_003f9608;
    dVar26 = DAT_003f9600;
    uVar14 = 0;
    if (pfVar15 != (float *)0x0) {
      lVar13 = *(long *)(param_3 + 0x340);
      if (lVar13 < 1) {
        uVar14 = 1;
      }
      else {
        lVar24 = 0;
        pfVar21 = pfVar15;
        do {
          lVar20 = *(long *)(param_3 + 0x360);
          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);
          lVar18 = (ulong)uVar23 * 0x10;
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&
             (*(int *)(lVar20 + 4 + lVar18) != 0)) {
            if (*(int *)(param_3 + 0x33c) == 4) {
              iVar3 = *(int *)(lVar20 + 0x44);
              lVar22 = 0;
              lVar17 = 0;
              do {
                fVar2 = fVar9;
                if (iVar3 != 0) {
                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];
                }
                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;
                if (uVar23 == 4) {
                  local_c8[lVar17] = (double)pfVar21[lVar22];
                }
                else {
                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];
                }
                lVar17 = lVar17 + 1;
                lVar22 = lVar22 + lVar13;
              } while (lVar17 != 4);
            }
            else {
              lVar20 = 0;
              pfVar19 = pfVar21;
              do {
                local_148[lVar20] = DAT_003f9608;
                local_c8[lVar20] = (double)*pfVar19;
                lVar20 = lVar20 + 1;
                pfVar19 = pfVar19 + lVar13;
              } while (lVar20 != 4);
            }
            dVar33 = param_2 - (double)local_168;
            dVar32 = DAT_003f9608;
            if (dVar31 <= dVar33) {
              local_148[0] = local_148[2];
              local_c8[0] = local_c8[2];
LAB_00254349:
              local_148[1] = local_148[3];
              local_c8[1] = local_c8[3];
            }
            else if (dVar33 <= DAT_00407738) {
              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;
              if (DAT_00407738 < dVar33) goto LAB_002544fd;
            }
            else {
              local_148[0] = local_148[0] + local_148[2];
              local_c8[0] = local_c8[0] + local_c8[2];
              dVar32 = DAT_00407728;
              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;
LAB_002544fd:
              local_148[1] = local_148[1] + local_148[3];
              local_c8[1] = local_c8[1] + local_c8[3];
              dVar32 = DAT_00407728;
            }
            if (param_1 - (double)lVar25 < dVar31) {
              if (DAT_00407738 < param_1 - (double)lVar25) {
                dVar32 = dVar32 + dVar32;
                local_148[0] = local_148[0] + local_148[1];
                local_c8[0] = local_c8[0] + local_c8[1];
              }
            }
            else {
              local_148[0] = local_148[1];
              local_c8[0] = local_c8[1];
            }
            if (uVar23 == 4) {
              dVar33 = DAT_003fa390;
              if (dVar26 <= dVar32) {
                dVar33 = dVar28 / dVar32;
              }
            }
            else {
              dVar32 = DAT_003f9c68;
              if (0.0 <= local_148[0]) {
                dVar32 = DAT_003f9608;
              }
              if (local_148[0] * dVar32 < dVar26) {
                dVar33 = dVar32 / dVar26;
              }
              else {
                dVar33 = DAT_003f9608 / local_148[0];
              }
            }
            lVar18 = lVar18 + *(long *)(param_5 + 0x360);
            if (*(int *)(lVar18 + 4) != 0) {
              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);
            }
          }
          lVar24 = lVar24 + 1;
          lVar13 = *(long *)(param_3 + 0x340);
          pfVar21 = pfVar21 + 1;
        } while (lVar24 < lVar13);
        uVar14 = 1;
      }
    }
    break;
  case 7:
    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);
    dVar28 = DAT_00406598;
    fVar9 = _DAT_003fa400;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (pfVar15 != (float *)0x0) {
      lVar13 = *(long *)(param_3 + 0x340);
      if (lVar13 < 1) {
        uVar14 = 1;
      }
      else {
        lVar24 = 0;
        pfVar21 = pfVar15;
        do {
          lVar20 = *(long *)(param_3 + 0x360);
          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar20 + 4 + lVar18);
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {
            uVar23 = uVar23 & 4;
            if (uVar23 == 0) {
              lVar20 = 0;
              pfVar19 = pfVar21;
              do {
                local_148[lVar20] = DAT_003f9608;
                local_c8[lVar20] = (double)*pfVar19;
                lVar20 = lVar20 + 1;
                pfVar19 = pfVar19 + lVar13;
              } while (lVar20 != 0x10);
            }
            else {
              iVar3 = *(int *)(lVar20 + 0x44);
              lVar22 = 0;
              lVar17 = 0;
              do {
                fVar2 = fVar9;
                if (iVar3 != 0) {
                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];
                }
                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;
                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];
                lVar17 = lVar17 + 1;
                lVar22 = lVar22 + lVar13;
              } while (lVar17 != 0x10);
            }
            dVar34 = param_1 - (double)lVar25;
            dVar31 = dVar26 - dVar34;
            dVar32 = dVar34 * dVar28 * dVar31;
            dVar35 = dVar31 * dVar32;
            dVar32 = dVar32 * dVar34;
            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);
            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);
            dVar31 = param_2 - (double)local_168;
            dVar36 = dVar26 - dVar31;
            dVar38 = dVar31 * dVar28 * dVar36;
            dVar34 = dVar36 * dVar38;
            dVar38 = dVar38 * dVar31;
            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);
            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);
            dVar31 = DAT_003f9608;
            if (uVar23 == 0) {
              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +
                       dVar32 * local_148[0xb]) * dVar36 +
                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +
                       dVar32 * local_148[3]) * dVar34 +
                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +
                       dVar32 * local_148[7]) * dVar27 +
                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]
                       + dVar32 * local_148[0xf]) * dVar38;
              dVar30 = DAT_003f9c68;
              if (0.0 <= dVar31) {
                dVar30 = DAT_003f9608;
              }
              if (dVar31 * dVar30 < DAT_003f9600) {
                dVar31 = dVar30 / DAT_003f9600;
              }
              else {
                dVar31 = DAT_003f9608 / dVar31;
              }
            }
            lVar18 = lVar18 + *(long *)(param_5 + 0x360);
            if (*(int *)(lVar18 + 4) != 0) {
              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =
                   (float)((dVar34 * (dVar37 * local_c8[2] +
                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +
                                     dVar32 * local_c8[3]) +
                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +
                            dVar32 * local_c8[7]) * dVar27 +
                            dVar36 * (dVar32 * local_c8[0xb] +
                                     dVar37 * local_c8[10] +
                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +
                           (dVar32 * local_c8[0xf] +
                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])
                           * dVar38) * dVar31);
            }
          }
          lVar24 = lVar24 + 1;
          lVar13 = *(long *)(param_3 + 0x340);
          pfVar21 = pfVar21 + 1;
        } while (lVar24 < lVar13);
        uVar14 = 1;
      }
    }
    break;
  case 8:
    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);
    uVar14 = 0;
    if (lVar25 != 0) {
      if (*(long *)(param_3 + 0x340) < 1) {
        uVar14 = 1;
      }
      else {
        lVar13 = 0;
        do {
          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;
          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&
              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&
             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {
            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =
                 *(undefined4 *)(lVar25 + lVar13 * 4);
          }
          lVar13 = lVar13 + 1;
        } while (lVar13 < *(long *)(param_3 + 0x340));
        uVar14 = 1;
      }
    }
    break;
  case 9:
    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);
    fVar12 = DAT_0041abe0;
    fVar2 = DAT_0041abdc;
    fVar9 = DAT_0041abd8;
    uVar11 = DAT_003f9c70;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (lVar13 != 0) {
      lVar24 = *(long *)(param_3 + 0x340);
      if (lVar24 < 1) {
        uVar14 = 1;
      }
      else {
        lVar20 = 0;
        do {
          lVar18 = *(long *)(param_3 + 0x360);
          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar18 + 4 + lVar17);
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {
            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);
            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);
            lVar22 = lVar20 + lVar24 * 2;
            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);
            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);
            dVar28 = dVar26;
            if ((uVar23 & 4) == 0) {
              local_160 = dVar26;
              dVar36 = DAT_003f9608;
              dVar35 = dVar26;
            }
            else {
              if (*(int *)(lVar18 + 0x44) == 0) {
                local_160 = dVar26;
                dVar35 = DAT_003f9608;
                fVar8 = _DAT_003fa400;
              }
              else {
                lVar22 = *(long *)(lVar18 + 0x48) * 4;
                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;
                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;
                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;
                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);
              }
              dVar36 = (double)fVar8 * DAT_003f9c60;
            }
            dVar37 = param_1 - (double)lVar25;
            dVar38 = param_2 - (double)local_168;
            lVar24 = *(long *)(param_3 + 0x360);
            lVar5 = *(long *)(lVar24 + 8);
            lVar6 = *(long *)(lVar24 + 0x18);
            lVar7 = *(long *)(lVar24 + 0x28);
            lVar22 = *(long *)(param_3 + 0x340);
            lVar24 = lVar13 + lVar22 * 0xc;
            lVar18 = lVar24 + lVar22 * -8;
            lVar22 = lVar18 + lVar22 * 4;
            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +
                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +
                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -
                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +
                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +
                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=
                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +
                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +
                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -
                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +
                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +
                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {
              dVar27 = DAT_003f9608 - dVar38;
              if (dVar27 < dVar37) {
                dVar37 = DAT_003f9608 - dVar37;
                dVar34 = (DAT_003f9608 - dVar37) - dVar27;
                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;
                dVar28 = DAT_003f9c68;
                if (0.0 <= dVar35) {
                  dVar28 = DAT_003f9608;
                }
                if (dVar28 * dVar35 < DAT_003f9600) {
                  dVar35 = dVar28 / DAT_003f9600;
                }
                else {
                  dVar35 = DAT_003f9608 / dVar35;
                }
                lVar17 = lVar17 + *(long *)(param_5 + 0x360);
                if (*(int *)(lVar17 + 4) != 0) {
                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);
                }
              }
              else {
                dVar31 = (DAT_003f9608 - dVar37) - dVar38;
                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;
                dVar28 = DAT_003f9c68;
                if (0.0 <= dVar35) {
                  dVar28 = DAT_003f9608;
                }
                if (dVar28 * dVar35 < DAT_003f9600) {
                  dVar35 = dVar28 / DAT_003f9600;
                }
                else {
                  dVar35 = DAT_003f9608 / dVar35;
                }
                lVar17 = lVar17 + *(long *)(param_5 + 0x360);
                if (*(int *)(lVar17 + 4) != 0) {
                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));
                }
              }
            }
            else if (dVar38 < dVar37) {
              dVar37 = DAT_003f9608 - dVar37;
              dVar33 = (DAT_003f9608 - dVar37) - dVar38;
              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;
              dVar28 = DAT_003f9c68;
              if (0.0 <= dVar35) {
                dVar28 = DAT_003f9608;
              }
              if (dVar28 * dVar35 < DAT_003f9600) {
                dVar35 = dVar28 / DAT_003f9600;
              }
              else {
                dVar35 = DAT_003f9608 / dVar35;
              }
              lVar17 = lVar17 + *(long *)(param_5 + 0x360);
              if (*(int *)(lVar17 + 4) != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);
              }
            }
            else {
              dVar38 = DAT_003f9608 - dVar38;
              dVar32 = (DAT_003f9608 - dVar37) - dVar38;
              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;
              dVar28 = DAT_003f9c68;
              if (0.0 <= dVar35) {
                dVar28 = DAT_003f9608;
              }
              if (dVar28 * dVar35 < DAT_003f9600) {
                dVar35 = dVar28 / DAT_003f9600;
              }
              else {
                dVar35 = DAT_003f9608 / dVar35;
              }
              lVar17 = lVar17 + *(long *)(param_5 + 0x360);
              if (*(int *)(lVar17 + 4) != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));
              }
            }
          }
          lVar20 = lVar20 + 1;
          lVar24 = *(long *)(param_3 + 0x340);
        } while (lVar20 < lVar24);
        uVar14 = 1;
      }
    }
    break;
  case 10:
    if (param_1 < DAT_004294e8) {
      local_178 = DAT_004294e8;
    }
    else if (DAT_004294f0 < param_1) {
      local_178 = DAT_004294f0;
    }
    dVar26 = floor(local_178 + DAT_003f9c28);
    if (param_2 < DAT_004294e8) {
      local_170 = DAT_004294e8;
    }
    else if (DAT_004294f0 < param_2) {
      local_170 = DAT_004294f0;
    }
    dVar28 = floor(local_170 + DAT_003f9c28);
    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);
    uVar14 = 0;
    if (lVar25 != 0) {
      if (*(long *)(param_3 + 0x340) < 1) {
        uVar14 = 1;
      }
      else {
        lVar13 = 0;
        do {
          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;
          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&
              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&
             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {
            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =
                 *(undefined4 *)(lVar25 + lVar13 * 4);
          }
          lVar13 = lVar13 + 1;
        } while (lVar13 < *(long *)(param_3 + 0x340));
        uVar14 = 1;
      }
    }
    break;
  case 0xb:
    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);
    dVar28 = DAT_0041d760;
    fVar9 = _DAT_003fa400;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (pfVar15 != (float *)0x0) {
      lVar13 = *(long *)(param_3 + 0x340);
      if (lVar13 < 1) {
        uVar14 = 1;
      }
      else {
        lVar24 = 0;
        pfVar21 = pfVar15;
        do {
          lVar20 = *(long *)(param_3 + 0x360);
          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar20 + 4 + lVar18);
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {
            uVar23 = uVar23 & 4;
            if (uVar23 == 0) {
              lVar20 = 0;
              pfVar19 = pfVar21;
              do {
                local_148[lVar20] = DAT_003f9608;
                local_c8[lVar20] = (double)*pfVar19;
                lVar20 = lVar20 + 1;
                pfVar19 = pfVar19 + lVar13;
              } while (lVar20 != 0x10);
            }
            else {
              iVar3 = *(int *)(lVar20 + 0x44);
              lVar22 = 0;
              lVar17 = 0;
              do {
                fVar2 = fVar9;
                if (iVar3 != 0) {
                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];
                }
                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;
                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];
                lVar17 = lVar17 + 1;
                lVar22 = lVar22 + lVar13;
              } while (lVar17 != 0x10);
            }
            dVar32 = param_1 - (double)lVar25;
            dVar31 = dVar26 - dVar32;
            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;
            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;
            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);
            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);
            dVar32 = param_2 - (double)local_168;
            dVar37 = dVar26 - dVar32;
            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;
            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;
            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);
            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);
            dVar32 = DAT_003f9608;
            if (uVar23 == 0) {
              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +
                       dVar33 * local_148[7]) * dVar27 +
                       (dVar33 * local_148[3] +
                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *
                       dVar31 + (dVar36 * local_148[10] +
                                 dVar34 * local_148[8] + dVar35 * local_148[9] +
                                dVar33 * local_148[0xb]) * dVar37 +
                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]
                       + dVar33 * local_148[0xf]) * dVar38;
              dVar30 = DAT_003f9c68;
              if (0.0 <= dVar32) {
                dVar30 = DAT_003f9608;
              }
              if (dVar32 * dVar30 < DAT_003f9600) {
                dVar32 = dVar30 / DAT_003f9600;
              }
              else {
                dVar32 = DAT_003f9608 / dVar32;
              }
            }
            lVar18 = lVar18 + *(long *)(param_5 + 0x360);
            if (*(int *)(lVar18 + 4) != 0) {
              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =
                   (float)((dVar27 * (dVar36 * local_c8[6] +
                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +
                                     dVar33 * local_c8[7]) +
                            dVar31 * (dVar36 * local_c8[2] +
                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +
                                     dVar33 * local_c8[3]) +
                            dVar37 * (dVar33 * local_c8[0xb] +
                                     dVar36 * local_c8[10] +
                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +
                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]
                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);
            }
          }
          lVar24 = lVar24 + 1;
          lVar13 = *(long *)(param_3 + 0x340);
          pfVar21 = pfVar21 + 1;
        } while (lVar24 < lVar13);
        uVar14 = 1;
      }
    }
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar14;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x148
MOVSD qword ptr [RSP],XMM0
MOVSD qword ptr [RSP + 0x8],XMM1
MOV qword ptr [RSP + 0x18],R8
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x138],RAX
XOR EAX,EAX
TEST RDI,RDI
JZ 0x00253bbf
MOV RBX,RDI
MOV R13,RSI
MOV RBP,RDX
MOV R12D,ECX
MOV R14,R9
MOV EAX,0xabacadab
CMP qword ptr [RDI + 0x3450],RAX
JNZ 0x00253bde
TEST RSI,RSI
JZ 0x00253bfd
MOVSD XMM0,qword ptr [0x004294e8]
MOVSD XMM6,qword ptr [RSP]
UCOMISD XMM0,XMM6
JA 0x00253b4c
MOVSD XMM0,qword ptr [0x004294f0]
MOVAPD XMM1,XMM0
CMPLTSD XMM1,XMM6
ANDPD XMM0,XMM1
ANDNPD XMM1,XMM6
ORPD XMM0,XMM1
CALL 0x0014d340
CVTTSD2SI R15,XMM0
MOVSD XMM0,qword ptr [0x004294e8]
MOVSD XMM3,qword ptr [RSP + 0x8]
UCOMISD XMM0,XMM3
JA 0x00253b87
MOVSD XMM0,qword ptr [0x004294f0]
MOVAPD XMM1,XMM0
CMPLTSD XMM1,XMM3
ANDPD XMM0,XMM1
ANDNPD XMM1,XMM3
ORPD XMM0,XMM1
CALL 0x0014d340
CVTTSD2SI RAX,XMM0
MOV qword ptr [RSP + 0x10],RAX
TEST R12D,R12D
JNZ 0x00253ba2
MOV R12D,dword ptr [RBX + 0x2f8]
CMP R12D,0xb
JA 0x00253eae
MOV EDX,R12D
LEA RCX,[0x429058]
MOVSXD RAX,dword ptr [RCX + RDX*0x4]
ADD RAX,RCX
JMP RAX
LEA RCX,[0x429140]
MOV EDX,0x134f
LEA RSI,[0x428711]
LEA RDI,[0x421301]
CALL 0x0014a360
LEA RCX,[0x429140]
MOV EDX,0x1350
LEA RSI,[0x428711]
LEA RDI,[0x419ba8]
CALL 0x0014a360
LEA RCX,[0x429140]
MOV EDX,0x1351
LEA RSI,[0x428711]
LEA RDI,[0x4293d0]
CALL 0x0014a360
CMP R12D,0x2
JZ 0x00253cb3
MOV EAX,0x2
CMP R12D,0x3
JZ 0x00253e16
MOV R9,R14
MOV R14,RAX
MOV R8,RAX
MOV RCX,RAX
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,R15
MOV RDI,R13
CALL 0x0014a9a0
MOV R12,RAX
MOV EAX,0x0
TEST R12,R12
JZ 0x00253e85
MOV R15,R14
IMUL R15,R14
MOV R9,qword ptr [RBX + 0x340]
TEST R9,R9
JLE 0x002557e4
LEA R14,[RSP + 0xb0]
LEA R8,[R14 + R15*0x8]
MOV EDI,0x0
MOVSD XMM11,qword ptr [0x003f9608]
MOVSD XMM10,qword ptr [0x003f9c60]
PXOR XMM4,XMM4
MOVAPD XMM9,XMM11
MOVSD XMM8,qword ptr [0x003f9c68]
JMP 0x0025587e
MOVSD XMM0,qword ptr [0x004294e8]
MOVSD XMM5,qword ptr [RSP]
UCOMISD XMM0,XMM5
JA 0x00253cdf
UCOMISD XMM5,qword ptr [0x004294f0]
JBE 0x00253cec
MOVSD XMM7,qword ptr [0x004294f0]
MOVSD qword ptr [RSP],XMM7
JMP 0x00253cec
MOVSD XMM7,qword ptr [0x004294e8]
MOVSD qword ptr [RSP],XMM7
MOVSD XMM1,qword ptr [RSP]
ADDSD XMM1,qword ptr [0x003f9c28]
MOVAPD XMM0,XMM1
MOVSD XMM3,qword ptr [0x003f9c70]
MOVAPD XMM2,XMM1
ANDPD XMM2,XMM3
MOVSD XMM4,qword ptr [0x003f9c30]
UCOMISD XMM4,XMM2
JBE 0x00253d4e
CVTTSD2SI RAX,XMM1
PXOR XMM2,XMM2
CVTSI2SD XMM2,RAX
MOVAPD XMM0,XMM2
CMPNLESD XMM0,XMM1
MOVSD XMM4,qword ptr [0x003f9608]
ANDPD XMM0,XMM4
SUBSD XMM2,XMM0
MOVAPD XMM0,XMM2
ANDNPD XMM3,XMM1
ORPD XMM0,XMM3
SUBSD XMM0,qword ptr [0x003f9608]
CVTTSD2SI R15,XMM0
MOVSD XMM0,qword ptr [0x004294e8]
MOVSD XMM7,qword ptr [RSP + 0x8]
UCOMISD XMM0,XMM7
JA 0x00253d89
UCOMISD XMM7,qword ptr [0x004294f0]
JBE 0x00253d97
MOVSD XMM7,qword ptr [0x004294f0]
MOVSD qword ptr [RSP + 0x8],XMM7
JMP 0x00253d97
MOVSD XMM5,qword ptr [0x004294e8]
MOVSD qword ptr [RSP + 0x8],XMM5
MOVSD XMM1,qword ptr [RSP + 0x8]
ADDSD XMM1,qword ptr [0x003f9c28]
MOVAPD XMM0,XMM1
MOVSD XMM3,qword ptr [0x003f9c70]
MOVAPD XMM2,XMM1
ANDPD XMM2,XMM3
MOVSD XMM4,qword ptr [0x003f9c30]
UCOMISD XMM4,XMM2
JBE 0x00253dfa
CVTTSD2SI RAX,XMM1
PXOR XMM2,XMM2
CVTSI2SD XMM2,RAX
MOVAPD XMM0,XMM2
CMPNLESD XMM0,XMM1
MOVSD XMM4,qword ptr [0x003f9608]
ANDPD XMM0,XMM4
SUBSD XMM2,XMM0
MOVAPD XMM0,XMM2
ANDNPD XMM3,XMM1
ORPD XMM0,XMM3
SUBSD XMM0,qword ptr [0x003f9608]
CVTTSD2SI RAX,XMM0
MOV qword ptr [RSP + 0x10],RAX
MOV EAX,0x3
JMP 0x00253c35
SUB R15,0x1
SUB qword ptr [RSP + 0x10],0x1
MOV EAX,0x4
JMP 0x00253c35
MOV EAX,0x0
PXOR XMM0,XMM0
LEA RDX,[RSP + 0xb0]
ADDSD XMM0,qword ptr [RDX + RAX*0x8]
ADD RAX,0x1
CMP R15,RAX
JG 0x00253e3b
TEST R10D,R10D
JZ 0x0025586a
MOV RAX,qword ptr [RCX + 0x8]
PXOR XMM1,XMM1
CVTSI2SD XMM1,R15
DIVSD XMM0,XMM1
MOV RSI,qword ptr [RSP + 0x18]
PXOR XMM5,XMM5
CVTSD2SS XMM5,XMM0
MOVSS dword ptr [RSI + RAX*0x4],XMM5
JMP 0x0025586a
PXOR XMM0,XMM0
JMP 0x00253e49
MOV EAX,0x1
MOV RBX,qword ptr [RSP + 0x138]
XOR RBX,qword ptr FS:[0x28]
JNZ 0x0025598d
ADD RSP,0x148
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R9,R14
MOV R8D,0x2
MOV ECX,0x2
MOV R14,qword ptr [RSP + 0x10]
MOV RDX,R14
MOV RSI,R15
MOV RDI,R13
CALL 0x0014a9a0
MOV RDI,RAX
MOV EAX,0x0
TEST RDI,RDI
JZ 0x00253e85
MOV RDX,qword ptr [RBX + 0x340]
TEST RDX,RDX
JLE 0x002557ee
MOV ESI,0x0
MOVSD XMM14,qword ptr [0x003f9608]
MOVQ RAX,XMM14
MOV R10,R14
MOV R11,qword ptr [RSP + 0x18]
JMP 0x00253fbb
MOVAPD XMM2,XMM3
ADDSD XMM2,XMM4
MOVAPD XMM0,XMM10
MULSD XMM0,XMM2
MULSD XMM2,XMM7
ADDSD XMM0,XMM2
PXOR XMM2,XMM2
UCOMISD XMM2,XMM0
JA 0x002541c5
MOVSD XMM2,qword ptr [0x003f9608]
MOVAPD XMM5,XMM2
MULSD XMM5,XMM0
UCOMISD XMM5,qword ptr [0x003f9600]
JC 0x002541d2
MOVSD XMM2,qword ptr [0x003f9608]
DIVSD XMM2,XMM0
MOVAPD XMM0,XMM2
TEST R13D,R13D
JZ 0x00253fa7
MOV RDX,qword ptr [RCX + 0x8]
MULSD XMM1,XMM4
MULSD XMM8,XMM3
ADDSD XMM1,XMM8
MULSD XMM10,XMM1
MULSD XMM4,XMM6
MULSD XMM3,XMM9
ADDSD XMM3,XMM4
MULSD XMM7,XMM3
ADDSD XMM10,XMM7
MULSD XMM10,XMM0
PXOR XMM7,XMM7
CVTSD2SS XMM7,XMM10
MOVSS dword ptr [R11 + RDX*0x4],XMM7
ADD RSI,0x1
MOV RDX,qword ptr [RBX + 0x340]
CMP RDX,RSI
JLE 0x00254210
MOV R8,qword ptr [RBX + 0x360]
MOV RCX,RSI
SHL RCX,0x4
MOV ECX,dword ptr [R8 + RCX*0x1]
SHL RCX,0x4
MOV R12D,dword ptr [R8 + RCX*0x1 + 0x4]
ADD RCX,qword ptr [RBP + 0x360]
MOV R13D,dword ptr [RCX + 0x4]
TEST R12D,R12D
JZ 0x00253fa7
TEST R13D,R13D
JZ 0x00253fa7
PXOR XMM0,XMM0
CVTSI2SD XMM0,R15
MOVSD XMM3,qword ptr [RSP]
SUBSD XMM3,XMM0
PXOR XMM0,XMM0
CVTSI2SD XMM0,R10
MOVSD XMM7,qword ptr [RSP + 0x8]
SUBSD XMM7,XMM0
MOVAPD XMM4,XMM14
SUBSD XMM4,XMM3
MOVAPD XMM10,XMM14
SUBSD XMM10,XMM7
PXOR XMM1,XMM1
CVTSS2SD XMM1,dword ptr [RDI + RSI*0x4]
LEA R14,[RSI + RDX*0x1]
PXOR XMM8,XMM8
CVTSS2SD XMM8,dword ptr [RDI + R14*0x4]
LEA R9,[RSI + RDX*0x2]
PXOR XMM6,XMM6
CVTSS2SD XMM6,dword ptr [RDI + R9*0x4]
ADD R9,RDX
PXOR XMM9,XMM9
CVTSS2SD XMM9,dword ptr [RDI + R9*0x4]
TEST R12B,0x4
JZ 0x00253f0c
CMP dword ptr [R8 + 0x44],0x0
JZ 0x002541e3
MOV R8,qword ptr [R8 + 0x48]
PXOR XMM13,XMM13
CVTSS2SD XMM13,dword ptr [RDI + R8*0x4]
MOVSD XMM0,qword ptr [0x003f9c60]
MULSD XMM13,XMM0
SHL R8,0x2
LEA R9,[R8 + RDX*0x4]
PXOR XMM12,XMM12
CVTSS2SD XMM12,dword ptr [RDI + R9*0x1]
MULSD XMM12,XMM0
LEA R9,[R8 + RDX*0x8]
PXOR XMM11,XMM11
CVTSS2SD XMM11,dword ptr [RDI + R9*0x1]
MULSD XMM11,XMM0
LEA RDX,[RDX + RDX*0x2]
LEA RDX,[R8 + RDX*0x4]
MOVSS XMM5,dword ptr [RDI + RDX*0x1]
CVTSS2SD XMM5,XMM5
MULSD XMM5,qword ptr [0x003f9c60]
MOVAPD XMM0,XMM3
MULSD XMM0,XMM12
MOVAPD XMM2,XMM4
MULSD XMM2,XMM13
ADDSD XMM2,XMM0
MULSD XMM2,XMM10
MOVAPD XMM0,XMM3
MULSD XMM0,XMM5
MOVAPD XMM15,XMM4
MULSD XMM15,XMM11
ADDSD XMM0,XMM15
MULSD XMM0,XMM7
ADDSD XMM2,XMM0
MOVSD XMM0,qword ptr [0x003f9c68]
MOVAPD XMM15,XMM2
CMPLTSD XMM15,qword ptr [0x003fa398]
ANDPD XMM0,XMM15
MOVQ RDX,XMM0
MOVSD XMM0,qword ptr [0x003f9608]
ANDNPD XMM15,XMM0
MOVQ XMM0,RDX
ORPD XMM0,XMM15
MOVAPD XMM15,XMM0
MULSD XMM15,XMM2
UCOMISD XMM15,qword ptr [0x003f9600]
JC 0x00254203
MOVSD XMM0,qword ptr [0x003f9608]
DIVSD XMM0,XMM2
TEST R13D,R13D
JZ 0x00253fa7
MOV RDX,qword ptr [RCX + 0x8]
MULSD XMM1,XMM13
MULSD XMM1,XMM4
MULSD XMM8,XMM12
MULSD XMM8,XMM3
ADDSD XMM1,XMM8
MULSD XMM10,XMM1
MULSD XMM6,XMM11
MULSD XMM4,XMM6
MULSD XMM5,XMM9
MULSD XMM3,XMM5
ADDSD XMM3,XMM4
MULSD XMM7,XMM3
ADDSD XMM10,XMM7
MULSD XMM0,XMM10
PXOR XMM7,XMM7
CVTSD2SS XMM7,XMM0
MOVSS dword ptr [R11 + RDX*0x4],XMM7
JMP 0x00253fa7
MOVSD XMM2,qword ptr [0x003f9c68]
JMP 0x00253f3b
DIVSD XMM2,qword ptr [0x003f9600]
MOVAPD XMM0,XMM2
JMP 0x00253f61
MOVSD XMM11,qword ptr [0x003f9608]
MOVQ XMM12,RAX
MOVQ XMM13,RAX
MOVSS XMM5,dword ptr [0x003fa400]
JMP 0x002540c1
DIVSD XMM0,qword ptr [0x003f9600]
JMP 0x00254164
MOV EAX,0x1
JMP 0x00253e85
MOV R9,R14
MOV R8D,0x2
MOV ECX,0x2
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,R15
MOV RDI,R13
CALL 0x0014a9a0
MOV R12,RAX
MOV EAX,0x0
TEST R12,R12
JZ 0x00253e85
MOV RCX,qword ptr [RBX + 0x340]
TEST RCX,RCX
JLE 0x002557f8
MOV R10,R12
MOV ESI,0x0
MOVSD XMM4,qword ptr [0x004294f8]
MOVAPD XMM3,XMM4
MOVSD XMM7,qword ptr [0x003f9600]
MOVSD XMM9,qword ptr [0x003f9608]
PXOR XMM6,XMM6
MOVAPD XMM5,XMM7
MOVAPD XMM8,XMM7
MOVSS XMM2,dword ptr [0x003fa400]
MOVSD XMM10,qword ptr [RSP]
MOVSD XMM11,qword ptr [RSP + 0x8]
MOV R13,qword ptr [RSP + 0x18]
JMP 0x00254427
MOV R11D,dword ptr [RDI + 0x44]
MOV R9D,0x0
MOV EDX,0x0
MOVSD XMM12,qword ptr [0x003f9c60]
JMP 0x00254301
CVTSS2SD XMM0,XMM0
MULSD XMM0,XMM12
MOVSD qword ptr [RSP + RDX*0x8 + 0x30],XMM0
PXOR XMM1,XMM1
CVTSS2SD XMM1,dword ptr [R10 + R9*0x4]
CMP R8D,0x4
JZ 0x00254318
MULSD XMM0,XMM1
MOVSD qword ptr [RSP + RDX*0x8 + 0xb0],XMM0
ADD RDX,0x1
ADD R9,RCX
CMP RDX,0x4
JZ 0x0025449a
MOVAPS XMM0,XMM2
TEST R11D,R11D
JZ 0x002542c4
MOV R14,R9
ADD R14,qword ptr [RDI + 0x48]
MOVSS XMM0,dword ptr [R12 + R14*0x4]
JMP 0x002542c4
MOVSD qword ptr [RSP + RDX*0x8 + 0xb0],XMM1
JMP 0x002542f0
MOVSD XMM0,qword ptr [RSP + 0x40]
MOVSD qword ptr [RSP + 0x30],XMM0
MOVSD XMM0,qword ptr [RSP + 0xc0]
MOVSD qword ptr [RSP + 0xb0],XMM0
MOVSD XMM1,qword ptr [0x003f9608]
MOVSD XMM0,qword ptr [RSP + 0x48]
MOVSD qword ptr [RSP + 0x38],XMM0
MOVSD XMM0,qword ptr [RSP + 0xc8]
MOVSD qword ptr [RSP + 0xb8],XMM0
PXOR XMM0,XMM0
CVTSI2SD XMM0,R15
MOVAPD XMM12,XMM10
SUBSD XMM12,XMM0
UCOMISD XMM12,XMM3
JC 0x00254572
MOVSD XMM0,qword ptr [RSP + 0x38]
MOVSD qword ptr [RSP + 0x30],XMM0
MOVSD XMM0,qword ptr [RSP + 0xb8]
MOVSD qword ptr [RSP + 0xb0],XMM0
CMP R8D,0x4
JZ 0x002545ce
MOVSD XMM1,qword ptr [RSP + 0x30]
UCOMISD XMM6,XMM1
JA 0x002545b7
MOVSD XMM0,qword ptr [0x003f9608]
MOVAPD XMM12,XMM1
MULSD XMM12,XMM0
UCOMISD XMM12,XMM5
JC 0x002545c4
MOVSD XMM0,qword ptr [0x003f9608]
DIVSD XMM0,XMM1
ADD RAX,qword ptr [RBP + 0x360]
CMP dword ptr [RAX + 0x4],0x0
JZ 0x0025440f
MOV RAX,qword ptr [RAX + 0x8]
MULSD XMM0,qword ptr [RSP + 0xb0]
PXOR XMM1,XMM1
CVTSD2SS XMM1,XMM0
MOVSS dword ptr [R13 + RAX*0x4],XMM1
ADD RSI,0x1
MOV RCX,qword ptr [RBX + 0x340]
ADD R10,0x4
CMP RCX,RSI
JLE 0x002545ee
MOV RDI,qword ptr [RBX + 0x360]
MOV RAX,RSI
SHL RAX,0x4
MOV R8D,dword ptr [RDI + RAX*0x1]
MOV EAX,R8D
SHL RAX,0x4
MOV RDX,qword ptr [RBP + 0x360]
CMP dword ptr [RDX + RAX*0x1 + 0x4],0x0
JZ 0x0025440f
CMP dword ptr [RDI + RAX*0x1 + 0x4],0x0
JZ 0x0025440f
CMP dword ptr [RBX + 0x33c],0x4
JZ 0x002542aa
SHL RCX,0x2
MOV RDI,R10
MOV EDX,0x0
MOVSD XMM1,qword ptr [0x003f9608]
MOVSD qword ptr [RSP + RDX*0x8 + 0x30],XMM1
PXOR XMM0,XMM0
CVTSS2SD XMM0,dword ptr [RDI]
MOVSD qword ptr [RSP + RDX*0x8 + 0xb0],XMM0
ADD RDX,0x1
ADD RDI,RCX
CMP RDX,0x4
JNZ 0x00254476
PXOR XMM0,XMM0
CVTSI2SD XMM0,qword ptr [RSP + 0x10]
MOVAPD XMM1,XMM11
SUBSD XMM1,XMM0
MOVAPD XMM0,XMM1
UCOMISD XMM1,XMM4
JNC 0x00254323
UCOMISD XMM1,qword ptr [0x00407738]
JBE 0x00254537
MOVSD XMM1,qword ptr [RSP + 0x30]
ADDSD XMM1,qword ptr [RSP + 0x40]
MOVSD qword ptr [RSP + 0x30],XMM1
MOVSD XMM1,qword ptr [RSP + 0xb0]
ADDSD XMM1,qword ptr [RSP + 0xc0]
MOVSD qword ptr [RSP + 0xb0],XMM1
UCOMISD XMM0,qword ptr [0x004294f8]
JNC 0x00254565
MOVSD XMM0,qword ptr [RSP + 0x38]
ADDSD XMM0,qword ptr [RSP + 0x48]
MOVSD qword ptr [RSP + 0x38],XMM0
MOVSD XMM0,qword ptr [RSP + 0xb8]
ADDSD XMM0,qword ptr [RSP + 0xc8]
MOVSD qword ptr [RSP + 0xb8],XMM0
MOVSD XMM1,qword ptr [0x00407728]
JMP 0x00254367
UCOMISD XMM1,qword ptr [0x004294f8]
JNC 0x00254558
UCOMISD XMM1,qword ptr [0x00407738]
JA 0x002544fd
MOVSD XMM1,qword ptr [0x003f9608]
JMP 0x00254367
MOVSD XMM1,qword ptr [0x003f9608]
JMP 0x00254349
MOVSD XMM1,qword ptr [0x00407728]
JMP 0x00254349
UCOMISD XMM12,qword ptr [0x00407738]
JBE 0x002543a3
ADDSD XMM1,XMM1
MOVSD XMM0,qword ptr [RSP + 0x30]
ADDSD XMM0,qword ptr [RSP + 0x38]
MOVSD qword ptr [RSP + 0x30],XMM0
MOVSD XMM0,qword ptr [RSP + 0xb0]
ADDSD XMM0,qword ptr [RSP + 0xb8]
MOVSD qword ptr [RSP + 0xb0],XMM0
JMP 0x002543a3
MOVSD XMM0,qword ptr [0x003f9c68]
JMP 0x002543c5
DIVSD XMM0,XMM8
JMP 0x002543e6
MOVSD XMM0,qword ptr [0x003fa390]
UCOMISD XMM1,XMM7
JC 0x002543e6
MOVAPD XMM0,XMM9
DIVSD XMM0,XMM1
JMP 0x002543e6
MOV EAX,0x1
JMP 0x00253e85
MOV RAX,qword ptr [RSP + 0x10]
LEA RDX,[RAX + -0x1]
LEA RSI,[R15 + -0x1]
MOV R9,R14
MOV R8D,0x4
MOV ECX,0x4
MOV RDI,R13
CALL 0x0014a9a0
MOV R14,RAX
MOV EAX,0x0
TEST R14,R14
JZ 0x00253e85
MOV RSI,qword ptr [RBX + 0x340]
TEST RSI,RSI
JLE 0x00255802
MOV RDI,R14
MOV R13D,0x0
MOVSD XMM10,qword ptr [0x003f9608]
MOVSD XMM9,qword ptr [0x00406598]
PXOR XMM12,XMM12
MOVSS XMM8,dword ptr [0x003fa400]
MOV R12,qword ptr [RSP + 0x18]
JMP 0x0025484b
MOV R9D,dword ptr [R8 + 0x44]
MOV EDX,0x0
MOV EAX,0x0
MOVSD XMM4,qword ptr [0x003f9c60]
JMP 0x002546bc
CVTSS2SD XMM0,XMM0
MULSD XMM0,XMM4
MOVSD qword ptr [RSP + RAX*0x8 + 0x30],XMM0
PXOR XMM1,XMM1
CVTSS2SD XMM1,dword ptr [RDI + RDX*0x4]
MULSD XMM0,XMM1
MOVSD qword ptr [RSP + RAX*0x8 + 0xb0],XMM0
ADD RAX,0x1
ADD RDX,RSI
CMP RAX,0x10
JZ 0x002548bb
MOVAPS XMM0,XMM8
TEST R9D,R9D
JZ 0x00254687
MOV R10,RDX
ADD R10,qword ptr [R8 + 0x48]
MOVSS XMM0,dword ptr [R14 + R10*0x4]
JMP 0x00254687
DIVSD XMM2,qword ptr [0x003f9600]
ADD RCX,qword ptr [RBP + 0x360]
CMP dword ptr [RCX + 0x4],0x0
JZ 0x00254833
MOV RCX,qword ptr [RCX + 0x8]
MOVAPD XMM15,XMM5
MULSD XMM15,qword ptr [RSP + 0xb0]
MOVAPD XMM1,XMM3
MULSD XMM1,qword ptr [RSP + 0xb8]
ADDSD XMM15,XMM1
MOVAPD XMM1,XMM7
MULSD XMM1,qword ptr [RSP + 0xc0]
ADDSD XMM1,XMM15
MOVAPD XMM15,XMM0
MULSD XMM15,qword ptr [RSP + 0xc8]
ADDSD XMM1,XMM15
MULSD XMM4,XMM1
MOVAPD XMM15,XMM5
MULSD XMM15,qword ptr [RSP + 0xd0]
MOVAPD XMM1,XMM3
MULSD XMM1,qword ptr [RSP + 0xd8]
ADDSD XMM15,XMM1
MOVAPD XMM1,XMM7
MULSD XMM1,qword ptr [RSP + 0xe0]
ADDSD XMM1,XMM15
MOVAPD XMM15,XMM0
MULSD XMM15,qword ptr [RSP + 0xe8]
ADDSD XMM1,XMM15
MULSD XMM1,XMM14
ADDSD XMM4,XMM1
MOVAPD XMM13,XMM5
MULSD XMM13,qword ptr [RSP + 0xf0]
MOVAPD XMM1,XMM3
MULSD XMM1,qword ptr [RSP + 0xf8]
ADDSD XMM13,XMM1
MOVAPD XMM1,XMM7
MULSD XMM1,qword ptr [RSP + 0x100]
ADDSD XMM1,XMM13
MOVAPD XMM13,XMM0
MULSD XMM13,qword ptr [RSP + 0x108]
ADDSD XMM13,XMM1
MULSD XMM6,XMM13
ADDSD XMM4,XMM6
MOVAPD XMM13,XMM4
MULSD XMM5,qword ptr [RSP + 0x110]
MULSD XMM3,qword ptr [RSP + 0x118]
ADDSD XMM5,XMM3
MULSD XMM7,qword ptr [RSP + 0x120]
MOVAPD XMM1,XMM7
ADDSD XMM1,XMM5
MULSD XMM0,qword ptr [RSP + 0x128]
ADDSD XMM0,XMM1
MULSD XMM0,XMM11
ADDSD XMM13,XMM0
MULSD XMM13,XMM2
PXOR XMM7,XMM7
CVTSD2SS XMM7,XMM13
MOVSS dword ptr [R12 + RCX*0x4],XMM7
ADD R13,0x1
MOV RSI,qword ptr [RBX + 0x340]
ADD RDI,0x4
CMP RSI,R13
JLE 0x00254adc
MOV R8,qword ptr [RBX + 0x360]
MOV RAX,R13
SHL RAX,0x4
MOV ECX,dword ptr [R8 + RAX*0x1]
SHL RCX,0x4
MOV R11D,dword ptr [R8 + RCX*0x1 + 0x4]
MOV RAX,qword ptr [RBP + 0x360]
CMP dword ptr [RAX + RCX*0x1 + 0x4],0x0
JZ 0x00254833
TEST R11D,R11D
JZ 0x00254833
AND R11D,0x4
JNZ 0x0025466f
SHL RSI,0x2
MOV RDX,RDI
MOV EAX,0x0
MOVSD XMM1,qword ptr [0x003f9608]
MOVSD qword ptr [RSP + RAX*0x8 + 0x30],XMM1
PXOR XMM0,XMM0
CVTSS2SD XMM0,dword ptr [RDX]
MOVSD qword ptr [RSP + RAX*0x8 + 0xb0],XMM0
ADD RAX,0x1
ADD RDX,RSI
CMP RAX,0x10
JNZ 0x00254897
PXOR XMM0,XMM0
CVTSI2SD XMM0,R15
MOVSD XMM6,qword ptr [RSP]
SUBSD XMM6,XMM0
MOVAPD XMM4,XMM10
SUBSD XMM4,XMM6
MOVAPD XMM0,XMM6
MULSD XMM0,XMM9
MULSD XMM0,XMM4
MOVAPD XMM5,XMM4
MULSD XMM5,XMM0
MULSD XMM0,XMM6
MOVAPD XMM1,XMM0
SUBSD XMM1,XMM5
SUBSD XMM4,XMM5
MOVAPD XMM3,XMM4
ADDSD XMM3,XMM1
SUBSD XMM6,XMM0
MOVAPD XMM7,XMM6
SUBSD XMM7,XMM1
PXOR XMM1,XMM1
CVTSI2SD XMM1,qword ptr [RSP + 0x10]
MOVSD XMM6,qword ptr [RSP + 0x8]
SUBSD XMM6,XMM1
MOVAPD XMM14,XMM10
SUBSD XMM14,XMM6
MOVAPD XMM11,XMM6
MULSD XMM11,XMM9
MULSD XMM11,XMM14
MOVAPD XMM4,XMM14
MULSD XMM4,XMM11
MULSD XMM11,XMM6
MOVAPD XMM1,XMM11
SUBSD XMM1,XMM4
SUBSD XMM14,XMM4
ADDSD XMM14,XMM1
SUBSD XMM6,XMM11
SUBSD XMM6,XMM1
MOVSD XMM2,qword ptr [0x003f9608]
TEST R11D,R11D
JNZ 0x002546dc
MOVAPD XMM13,XMM5
MULSD XMM13,qword ptr [RSP + 0x30]
MOVAPD XMM1,XMM3
MULSD XMM1,qword ptr [RSP + 0x38]
ADDSD XMM13,XMM1
MOVAPD XMM15,XMM7
MULSD XMM15,qword ptr [RSP + 0x40]
ADDSD XMM13,XMM15
MOVAPD XMM15,XMM0
MULSD XMM15,qword ptr [RSP + 0x48]
ADDSD XMM13,XMM15
MULSD XMM13,XMM4
MOVAPD XMM1,XMM5
MULSD XMM1,qword ptr [RSP + 0x50]
MOVAPD XMM15,XMM3
MULSD XMM15,qword ptr [RSP + 0x58]
ADDSD XMM1,XMM15
MOVAPD XMM15,XMM7
MULSD XMM15,qword ptr [RSP + 0x60]
ADDSD XMM15,XMM1
MOVAPD XMM1,XMM0
MULSD XMM1,qword ptr [RSP + 0x68]
ADDSD XMM15,XMM1
MULSD XMM15,XMM14
ADDSD XMM13,XMM15
MOVAPD XMM1,XMM5
MULSD XMM1,qword ptr [RSP + 0x70]
MOVAPD XMM15,XMM3
MULSD XMM15,qword ptr [RSP + 0x78]
ADDSD XMM1,XMM15
MOVAPD XMM15,XMM7
MULSD XMM15,qword ptr [RSP + 0x80]
ADDSD XMM15,XMM1
MOVAPD XMM1,XMM0
MULSD XMM1,qword ptr [RSP + 0x88]
ADDSD XMM15,XMM1
MULSD XMM15,XMM6
ADDSD XMM15,XMM13
MOVAPD XMM1,XMM5
MULSD XMM1,qword ptr [RSP + 0x90]
MOVAPD XMM13,XMM3
MULSD XMM13,qword ptr [RSP + 0x98]
ADDSD XMM1,XMM13
MOVAPD XMM13,XMM7
MULSD XMM13,qword ptr [RSP + 0xa0]
ADDSD XMM13,XMM1
MOVAPD XMM1,XMM0
MULSD XMM1,qword ptr [RSP + 0xa8]
ADDSD XMM13,XMM1
MULSD XMM13,XMM11
ADDSD XMM15,XMM13
MOVSD XMM2,qword ptr [0x003f9c68]
UCOMISD XMM12,XMM15
JA 0x00254ab3
MOVSD XMM2,qword ptr [0x003f9608]
MOVAPD XMM1,XMM15
MULSD XMM1,XMM2
UCOMISD XMM1,qword ptr [0x003f9600]
JC 0x002546d4
MOVSD XMM2,qword ptr [0x003f9608]
DIVSD XMM2,XMM15
JMP 0x002546dc
MOV EAX,0x1
JMP 0x00253e85
MOV R9,R14
MOV R8D,0x1
MOV ECX,0x1
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,R15
MOV RDI,R13
CALL 0x0014a9a0
MOV R9,RAX
MOV EAX,0x0
TEST R9,R9
JZ 0x00253e85
CMP qword ptr [RBX + 0x340],0x0
JLE 0x0025580c
MOV ECX,0x0
MOV R8,qword ptr [RSP + 0x18]
JMP 0x00254b3c
ADD RCX,0x1
CMP qword ptr [RBX + 0x340],RCX
JLE 0x00254b81
MOV RDX,qword ptr [RBX + 0x360]
MOV RAX,RCX
SHL RAX,0x4
MOV EAX,dword ptr [RDX + RAX*0x1]
SHL RAX,0x4
MOV RSI,qword ptr [RBP + 0x360]
CMP dword ptr [RSI + RAX*0x1 + 0x4],0x0
JZ 0x00254b2f
CMP dword ptr [RDX + RAX*0x1 + 0x4],0x0
JZ 0x00254b2f
ADD RAX,RSI
CMP dword ptr [RAX + 0x4],0x0
JZ 0x00254b2f
MOVSS XMM0,dword ptr [R9 + RCX*0x4]
MOV RAX,qword ptr [RAX + 0x8]
MOVSS dword ptr [R8 + RAX*0x4],XMM0
JMP 0x00254b2f
MOV EAX,0x1
JMP 0x00253e85
MOVSD XMM0,qword ptr [0x004294e8]
MOVSD XMM7,qword ptr [RSP]
UCOMISD XMM0,XMM7
JA 0x00254bb7
UCOMISD XMM7,qword ptr [0x004294f0]
JBE 0x00254bc4
MOVSD XMM7,qword ptr [0x004294f0]
MOVSD qword ptr [RSP],XMM7
JMP 0x00254bc4
MOVSD XMM7,qword ptr [0x004294e8]
MOVSD qword ptr [RSP],XMM7
MOVSD XMM0,qword ptr [RSP]
ADDSD XMM0,qword ptr [0x003f9c28]
CALL 0x0014d340
CVTTSD2SI R12,XMM0
MOVSD XMM0,qword ptr [0x004294e8]
MOVSD XMM2,qword ptr [RSP + 0x8]
UCOMISD XMM0,XMM2
JA 0x00254c09
UCOMISD XMM2,qword ptr [0x004294f0]
JBE 0x00254c17
MOVSD XMM5,qword ptr [0x004294f0]
MOVSD qword ptr [RSP + 0x8],XMM5
JMP 0x00254c17
MOVSD XMM5,qword ptr [0x004294e8]
MOVSD qword ptr [RSP + 0x8],XMM5
MOVSD XMM0,qword ptr [RSP + 0x8]
ADDSD XMM0,qword ptr [0x003f9c28]
CALL 0x0014d340
CVTTSD2SI RDX,XMM0
MOV R9,R14
MOV R8D,0x1
MOV ECX,0x1
MOV RSI,R12
MOV RDI,R13
CALL 0x0014a9a0
MOV R9,RAX
MOV EAX,0x0
TEST R9,R9
JZ 0x00253e85
CMP qword ptr [RBX + 0x340],0x0
JLE 0x00255816
MOV ECX,0x0
MOV R8,qword ptr [RSP + 0x18]
JMP 0x00254c80
ADD RCX,0x1
CMP qword ptr [RBX + 0x340],RCX
JLE 0x00254cc5
MOV RDX,qword ptr [RBX + 0x360]
MOV RAX,RCX
SHL RAX,0x4
MOV EAX,dword ptr [RDX + RAX*0x1]
SHL RAX,0x4
MOV RSI,qword ptr [RBP + 0x360]
CMP dword ptr [RSI + RAX*0x1 + 0x4],0x0
JZ 0x00254c73
CMP dword ptr [RDX + RAX*0x1 + 0x4],0x0
JZ 0x00254c73
ADD RAX,RSI
CMP dword ptr [RAX + 0x4],0x0
JZ 0x00254c73
MOVSS XMM0,dword ptr [R9 + RCX*0x4]
MOV RAX,qword ptr [RAX + 0x8]
MOVSS dword ptr [R8 + RAX*0x4],XMM0
JMP 0x00254c73
MOV EAX,0x1
JMP 0x00253e85
MOV R9,R14
MOV R8D,0x2
MOV ECX,0x2
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,R15
MOV RDI,R13
CALL 0x0014a9a0
MOV R8,RAX
MOV EAX,0x0
TEST R8,R8
JZ 0x00253e85
MOV RAX,qword ptr [RBX + 0x340]
TEST RAX,RAX
JLE 0x00255820
MOV R14D,0x0
MOVSS XMM12,dword ptr [0x0041abd8]
MOVSS XMM11,dword ptr [0x0041abdc]
MOVSS XMM10,dword ptr [0x0041abe0]
MOVQ XMM13,qword ptr [0x003f9c70]
MOVSD XMM7,qword ptr [0x003f9608]
MOVSD qword ptr [RSP + 0x20],XMM7
MOVSD qword ptr [RSP + 0x28],XMM7
MOV R13,qword ptr [RSP + 0x18]
JMP 0x00254e73
MOVSD XMM9,qword ptr [0x003f9608]
MOV RSI,qword ptr [RSP + 0x28]
MOV qword ptr [RSP + 0x18],RSI
MOVSS XMM14,dword ptr [0x003fa400]
JMP 0x00254f48
MOVSD XMM14,qword ptr [0x003f9608]
MOVSD XMM9,qword ptr [RSP + 0x20]
MOVQ RSI,XMM9
MOVSD qword ptr [RSP + 0x18],XMM9
JMP 0x00254f56
MOVSD XMM5,qword ptr [0x003f9c68]
JMP 0x002550de
DIVSD XMM5,qword ptr [0x003f9600]
JMP 0x00255102
MOVSD XMM0,qword ptr [0x003f9608]
MOVAPD XMM1,XMM0
SUBSD XMM1,XMM2
SUBSD XMM0,XMM1
SUBSD XMM0,XMM3
MOVQ XMM2,RSI
MULSD XMM2,XMM1
MULSD XMM14,XMM3
ADDSD XMM14,XMM2
MOVSD XMM2,qword ptr [RSP + 0x18]
MULSD XMM2,XMM0
ADDSD XMM14,XMM2
PXOR XMM2,XMM2
UCOMISD XMM2,XMM14
JA 0x00255143
MOVSD XMM6,qword ptr [0x003f9608]
MOVAPD XMM2,XMM6
MULSD XMM2,XMM14
UCOMISD XMM2,qword ptr [0x003f9600]
JC 0x00255150
MOVSD XMM6,qword ptr [0x003f9608]
DIVSD XMM6,XMM14
ADD RDX,qword ptr [RBP + 0x360]
CMP dword ptr [RDX + 0x4],0x0
JZ 0x00254e5f
MOV RAX,qword ptr [RDX + 0x8]
MULSD XMM1,XMM7
MULSD XMM3,XMM4
ADDSD XMM1,XMM3
MULSD XMM0,XMM5
ADDSD XMM0,XMM1
MULSD XMM0,XMM6
PXOR XMM5,XMM5
CVTSD2SS XMM5,XMM0
MOVSS dword ptr [R13 + RAX*0x4],XMM5
ADD R14,0x1
MOV RAX,qword ptr [RBX + 0x340]
CMP RAX,R14
JLE 0x00255300
MOV RCX,qword ptr [RBX + 0x360]
MOV RDX,R14
SHL RDX,0x4
MOV EDX,dword ptr [RCX + RDX*0x1]
SHL RDX,0x4
MOV EDI,dword ptr [RCX + RDX*0x1 + 0x4]
MOV R9,qword ptr [RBP + 0x360]
CMP dword ptr [R9 + RDX*0x1 + 0x4],0x0
JZ 0x00254e5f
TEST EDI,EDI
JZ 0x00254e5f
PXOR XMM7,XMM7
CVTSS2SD XMM7,dword ptr [R8 + R14*0x4]
LEA R9,[R14 + RAX*0x1]
PXOR XMM5,XMM5
CVTSS2SD XMM5,dword ptr [R8 + R9*0x4]
LEA RSI,[R14 + RAX*0x2]
PXOR XMM6,XMM6
CVTSS2SD XMM6,dword ptr [R8 + RSI*0x4]
ADD RSI,RAX
PXOR XMM4,XMM4
CVTSS2SD XMM4,dword ptr [R8 + RSI*0x4]
TEST DIL,0x4
JZ 0x00254d77
CMP dword ptr [RCX + 0x44],0x0
JZ 0x00254d56
MOV RDI,qword ptr [RCX + 0x48]
PXOR XMM14,XMM14
CVTSS2SD XMM14,dword ptr [R8 + RDI*0x4]
MOVSD XMM0,qword ptr [0x003f9c60]
MULSD XMM14,XMM0
MOVQ RSI,XMM14
SHL RDI,0x2
LEA RCX,[RDI + RAX*0x4]
PXOR XMM1,XMM1
CVTSS2SD XMM1,dword ptr [R8 + RCX*0x1]
MULSD XMM1,XMM0
MOVSD qword ptr [RSP + 0x18],XMM1
LEA RCX,[RDI + RAX*0x8]
PXOR XMM1,XMM1
CVTSS2SD XMM1,dword ptr [R8 + RCX*0x1]
MULSD XMM1,XMM0
MOVAPD XMM9,XMM1
LEA RAX,[RAX + RAX*0x2]
LEA RAX,[RDI + RAX*0x4]
MOVSS XMM14,dword ptr [R8 + RAX*0x1]
CVTSS2SD XMM14,XMM14
MULSD XMM14,qword ptr [0x003f9c60]
PXOR XMM0,XMM0
CVTSI2SD XMM0,R15
MOVSD XMM2,qword ptr [RSP]
SUBSD XMM2,XMM0
PXOR XMM0,XMM0
CVTSI2SD XMM0,qword ptr [RSP + 0x10]
MOVSD XMM3,qword ptr [RSP + 0x8]
SUBSD XMM3,XMM0
MOV RAX,qword ptr [RBX + 0x360]
MOV R9,qword ptr [RAX + 0x8]
MOV RDI,qword ptr [RAX + 0x18]
MOV RAX,qword ptr [RAX + 0x28]
MOV R12,qword ptr [RBX + 0x340]
LEA R10,[R12 + R12*0x2]
LEA R11,[R8 + R10*0x4]
MOV R10,R12
NEG R10
LEA R10,[R11 + R10*0x8]
LEA R12,[R10 + R12*0x4]
MOVAPS XMM1,XMM12
MULSS XMM1,dword ptr [R8 + R9*0x4]
MOVAPS XMM0,XMM11
MULSS XMM0,dword ptr [R8 + RDI*0x4]
ADDSS XMM0,XMM1
MOVAPS XMM1,XMM10
MULSS XMM1,dword ptr [R8 + RAX*0x4]
ADDSS XMM0,XMM1
CVTSS2SD XMM0,XMM0
MOVAPS XMM1,XMM12
MULSS XMM1,dword ptr [R11 + R9*0x4]
MOVAPS XMM15,XMM11
MULSS XMM15,dword ptr [R11 + RDI*0x4]
ADDSS XMM15,XMM1
MOVAPS XMM1,XMM10
MULSS XMM1,dword ptr [R11 + RAX*0x4]
ADDSS XMM1,XMM15
CVTSS2SD XMM1,XMM1
SUBSD XMM0,XMM1
ANDPD XMM0,XMM13
MOVAPS XMM15,XMM12
MULSS XMM15,dword ptr [R10 + R9*0x4]
MOVAPS XMM1,XMM11
MULSS XMM1,dword ptr [R10 + RDI*0x4]
ADDSS XMM15,XMM1
MOVAPS XMM1,XMM10
MULSS XMM1,dword ptr [R10 + RAX*0x4]
ADDSS XMM1,XMM15
PXOR XMM8,XMM8
CVTSS2SD XMM8,XMM1
MOVAPS XMM1,XMM12
MULSS XMM1,dword ptr [R12 + R9*0x4]
MOVAPS XMM15,XMM11
MULSS XMM15,dword ptr [R12 + RDI*0x4]
ADDSS XMM1,XMM15
MOVAPS XMM15,XMM10
MULSS XMM15,dword ptr [R12 + RAX*0x4]
ADDSS XMM15,XMM1
CVTSS2SD XMM15,XMM15
MOVAPD XMM1,XMM8
SUBSD XMM1,XMM15
ANDPD XMM1,XMM13
UCOMISD XMM1,XMM0
JBE 0x0025515d
UCOMISD XMM3,XMM2
JC 0x00254db2
MOVSD XMM0,qword ptr [0x003f9608]
MOVAPD XMM1,XMM0
SUBSD XMM1,XMM3
SUBSD XMM0,XMM2
SUBSD XMM0,XMM1
MULSD XMM14,XMM2
MOVQ XMM3,RSI
MULSD XMM3,XMM1
ADDSD XMM14,XMM3
MOVAPD XMM3,XMM9
MULSD XMM3,XMM0
ADDSD XMM14,XMM3
PXOR XMM3,XMM3
UCOMISD XMM3,XMM14
JA 0x00254d98
MOVSD XMM5,qword ptr [0x003f9608]
MOVAPD XMM3,XMM5
MULSD XMM3,XMM14
UCOMISD XMM3,qword ptr [0x003f9600]
JC 0x00254da5
MOVSD XMM5,qword ptr [0x003f9608]
DIVSD XMM5,XMM14
ADD RDX,qword ptr [RBP + 0x360]
CMP dword ptr [RDX + 0x4],0x0
JZ 0x00254e5f
MOV RAX,qword ptr [RDX + 0x8]
MULSD XMM2,XMM4
MULSD XMM7,XMM1
ADDSD XMM7,XMM2
MULSD XMM0,XMM6
ADDSD XMM0,XMM7
MULSD XMM5,XMM0
PXOR XMM7,XMM7
CVTSD2SS XMM7,XMM5
MOVSS dword ptr [R13 + RAX*0x4],XMM7
JMP 0x00254e5f
MOVSD XMM6,qword ptr [0x003f9c68]
JMP 0x00254e03
DIVSD XMM6,qword ptr [0x003f9600]
JMP 0x00254e27
MOVSD XMM0,qword ptr [0x003f9608]
SUBSD XMM0,XMM3
UCOMISD XMM0,XMM2
JC 0x00255237
MOVSD XMM0,qword ptr [0x003f9608]
SUBSD XMM0,XMM2
SUBSD XMM0,XMM3
MOVSD XMM1,qword ptr [RSP + 0x18]
MULSD XMM1,XMM2
MOVAPD XMM4,XMM9
MULSD XMM4,XMM3
ADDSD XMM4,XMM1
MOVQ XMM1,RSI
MULSD XMM1,XMM0
ADDSD XMM1,XMM4
PXOR XMM4,XMM4
UCOMISD XMM4,XMM1
JA 0x0025521f
MOVSD XMM4,qword ptr [0x003f9608]
MOVAPD XMM14,XMM4
MULSD XMM14,XMM1
UCOMISD XMM14,qword ptr [0x003f9600]
JC 0x00255229
MOVSD XMM4,qword ptr [0x003f9608]
DIVSD XMM4,XMM1
MOVAPD XMM1,XMM4
ADD RDX,qword ptr [RBP + 0x360]
CMP dword ptr [RDX + 0x4],0x0
JZ 0x00254e5f
MOV RAX,qword ptr [RDX + 0x8]
MULSD XMM2,XMM5
MULSD XMM3,XMM6
ADDSD XMM3,XMM2
MULSD XMM7,XMM0
ADDSD XMM7,XMM3
MULSD XMM1,XMM7
PXOR XMM7,XMM7
CVTSD2SS XMM7,XMM1
MOVSS dword ptr [R13 + RAX*0x4],XMM7
JMP 0x00254e5f
MOVSD XMM4,qword ptr [0x003f9c68]
JMP 0x002551b9
DIVSD XMM4,qword ptr [0x003f9600]
MOVAPD XMM1,XMM4
JMP 0x002551de
MOVSD XMM7,qword ptr [0x003f9608]
SUBSD XMM7,XMM2
MOVAPD XMM2,XMM7
MOVSD XMM1,qword ptr [0x003f9608]
SUBSD XMM1,XMM7
SUBSD XMM1,XMM0
MOVAPD XMM3,XMM9
MULSD XMM3,XMM7
MOVSD XMM7,qword ptr [RSP + 0x18]
MULSD XMM7,XMM0
ADDSD XMM3,XMM7
MULSD XMM14,XMM1
ADDSD XMM14,XMM3
PXOR XMM3,XMM3
UCOMISD XMM3,XMM14
JA 0x002552ec
MOVSD XMM7,qword ptr [0x003f9608]
MOVAPD XMM3,XMM7
MULSD XMM3,XMM14
UCOMISD XMM3,qword ptr [0x003f9600]
JC 0x002552f6
MOVSD XMM7,qword ptr [0x003f9608]
DIVSD XMM7,XMM14
ADD RDX,qword ptr [RBP + 0x360]
CMP dword ptr [RDX + 0x4],0x0
JZ 0x00254e5f
MOV RAX,qword ptr [RDX + 0x8]
MULSD XMM6,XMM2
MULSD XMM5,XMM0
ADDSD XMM5,XMM6
MULSD XMM1,XMM4
ADDSD XMM1,XMM5
MULSD XMM1,XMM7
PXOR XMM5,XMM5
CVTSD2SS XMM5,XMM1
MOVSS dword ptr [R13 + RAX*0x4],XMM5
JMP 0x00254e5f
MOVSD XMM7,qword ptr [0x003f9c68]
JMP 0x0025528b
DIVSD XMM7,qword ptr [0x003f9600]
JMP 0x002552ab
MOV EAX,0x1
JMP 0x00253e85
MOV RAX,qword ptr [RSP + 0x10]
LEA RDX,[RAX + -0x1]
LEA RSI,[R15 + -0x1]
MOV R9,R14
MOV R8D,0x4
MOV ECX,0x4
MOV RDI,R13
CALL 0x0014a9a0
MOV R14,RAX
MOV EAX,0x0
TEST R14,R14
JZ 0x00253e85
MOV RSI,qword ptr [RBX + 0x340]
TEST RSI,RSI
JLE 0x0025582a
MOV RDI,R14
MOV R13D,0x0
MOVSD XMM10,qword ptr [0x003f9608]
MOVSD XMM9,qword ptr [0x0041d760]
PXOR XMM12,XMM12
MOVSS XMM8,dword ptr [0x003fa400]
MOV R12,qword ptr [RSP + 0x18]
JMP 0x0025554e
MOV R9D,dword ptr [R8 + 0x44]
MOV EDX,0x0
MOV EAX,0x0
MOVSD XMM4,qword ptr [0x003f9c60]
JMP 0x002553ce
CVTSS2SD XMM0,XMM0
MULSD XMM0,XMM4
MOVSD qword ptr [RSP + RAX*0x8 + 0x30],XMM0
PXOR XMM1,XMM1
CVTSS2SD XMM1,dword ptr [RDI + RDX*0x4]
MULSD XMM0,XMM1
MOVSD qword ptr [RSP + RAX*0x8 + 0xb0],XMM0
ADD RAX,0x1
ADD RDX,RSI
CMP RAX,0x10
JZ 0x002555be
MOVAPS XMM0,XMM8
TEST R9D,R9D
JZ 0x00255399
MOV R10,RDX
ADD R10,qword ptr [R8 + 0x48]
MOVSS XMM0,dword ptr [R14 + R10*0x4]
JMP 0x00255399
DIVSD XMM2,qword ptr [0x003f9600]
ADD RCX,qword ptr [RBP + 0x360]
CMP dword ptr [RCX + 0x4],0x0
JZ 0x00255536
MOV RCX,qword ptr [RCX + 0x8]
MOVAPD XMM4,XMM0
MULSD XMM4,qword ptr [RSP + 0xb0]
MOVAPD XMM1,XMM3
MULSD XMM1,qword ptr [RSP + 0xb8]
ADDSD XMM4,XMM1
MOVAPD XMM1,XMM6
MULSD XMM1,qword ptr [RSP + 0xc0]
ADDSD XMM1,XMM4
MOVAPD XMM4,XMM13
MULSD XMM4,qword ptr [RSP + 0xc8]
ADDSD XMM1,XMM4
MULSD XMM15,XMM1
MOVAPD XMM4,XMM0
MULSD XMM4,qword ptr [RSP + 0xd0]
MOVAPD XMM1,XMM3
MULSD XMM1,qword ptr [RSP + 0xd8]
ADDSD XMM4,XMM1
MOVAPD XMM1,XMM6
MULSD XMM1,qword ptr [RSP + 0xe0]
ADDSD XMM1,XMM4
MOVAPD XMM4,XMM13
MULSD XMM4,qword ptr [RSP + 0xe8]
ADDSD XMM1,XMM4
MULSD XMM14,XMM1
ADDSD XMM14,XMM15
MOVAPD XMM7,XMM0
MULSD XMM7,qword ptr [RSP + 0xf0]
MOVAPD XMM1,XMM3
MULSD XMM1,qword ptr [RSP + 0xf8]
ADDSD XMM7,XMM1
MOVAPD XMM1,XMM6
MULSD XMM1,qword ptr [RSP + 0x100]
ADDSD XMM1,XMM7
MOVAPD XMM7,XMM13
MULSD XMM7,qword ptr [RSP + 0x108]
ADDSD XMM7,XMM1
MULSD XMM5,XMM7
MOVAPD XMM7,XMM14
ADDSD XMM7,XMM5
MOVAPD XMM5,XMM0
MULSD XMM5,qword ptr [RSP + 0x110]
MULSD XMM3,qword ptr [RSP + 0x118]
ADDSD XMM5,XMM3
MULSD XMM6,qword ptr [RSP + 0x120]
MOVAPD XMM1,XMM6
ADDSD XMM1,XMM5
MOVAPD XMM0,XMM13
MULSD XMM0,qword ptr [RSP + 0x128]
ADDSD XMM1,XMM0
MULSD XMM1,XMM11
ADDSD XMM7,XMM1
MULSD XMM7,XMM2
CVTSD2SS XMM7,XMM7
MOVSS dword ptr [R12 + RCX*0x4],XMM7
ADD R13,0x1
MOV RSI,qword ptr [RBX + 0x340]
ADD RDI,0x4
CMP RSI,R13
JLE 0x002557da
MOV R8,qword ptr [RBX + 0x360]
MOV RAX,R13
SHL RAX,0x4
MOV ECX,dword ptr [R8 + RAX*0x1]
SHL RCX,0x4
MOV R11D,dword ptr [R8 + RCX*0x1 + 0x4]
MOV RAX,qword ptr [RBP + 0x360]
CMP dword ptr [RAX + RCX*0x1 + 0x4],0x0
JZ 0x00255536
TEST R11D,R11D
JZ 0x00255536
AND R11D,0x4
JNZ 0x00255381
SHL RSI,0x2
MOV RDX,RDI
MOV EAX,0x0
MOVSD XMM1,qword ptr [0x003f9608]
MOVSD qword ptr [RSP + RAX*0x8 + 0x30],XMM1
PXOR XMM0,XMM0
CVTSS2SD XMM0,dword ptr [RDX]
MOVSD qword ptr [RSP + RAX*0x8 + 0xb0],XMM0
ADD RAX,0x1
ADD RDX,RSI
CMP RAX,0x10
JNZ 0x0025559a
PXOR XMM0,XMM0
CVTSI2SD XMM0,R15
MOVSD XMM5,qword ptr [RSP]
SUBSD XMM5,XMM0
MOVAPD XMM4,XMM10
SUBSD XMM4,XMM5
MOVAPD XMM0,XMM5
MULSD XMM0,XMM9
MULSD XMM0,XMM5
MULSD XMM0,XMM5
MOVAPD XMM13,XMM0
MOVAPD XMM0,XMM4
MULSD XMM0,XMM9
MULSD XMM0,XMM4
MULSD XMM0,XMM4
MOVAPD XMM1,XMM13
SUBSD XMM1,XMM0
SUBSD XMM4,XMM0
MOVAPD XMM3,XMM4
ADDSD XMM3,XMM1
SUBSD XMM5,XMM13
SUBSD XMM5,XMM1
MOVAPD XMM6,XMM5
PXOR XMM1,XMM1
CVTSI2SD XMM1,qword ptr [RSP + 0x10]
MOVSD XMM5,qword ptr [RSP + 0x8]
SUBSD XMM5,XMM1
MOVAPD XMM14,XMM10
SUBSD XMM14,XMM5
MOVAPD XMM11,XMM5
MULSD XMM11,XMM9
MULSD XMM11,XMM5
MULSD XMM11,XMM5
MOVAPD XMM15,XMM14
MULSD XMM15,XMM9
MULSD XMM15,XMM14
MULSD XMM15,XMM14
MOVAPD XMM1,XMM11
SUBSD XMM1,XMM15
SUBSD XMM14,XMM15
ADDSD XMM14,XMM1
SUBSD XMM5,XMM11
SUBSD XMM5,XMM1
MOVSD XMM2,qword ptr [0x003f9608]
TEST R11D,R11D
JNZ 0x002553ee
MOVAPD XMM7,XMM0
MULSD XMM7,qword ptr [RSP + 0x30]
MOVAPD XMM4,XMM3
MULSD XMM4,qword ptr [RSP + 0x38]
ADDSD XMM7,XMM4
MOVAPD XMM4,XMM6
MULSD XMM4,qword ptr [RSP + 0x40]
ADDSD XMM7,XMM4
MOVAPD XMM4,XMM13
MULSD XMM4,qword ptr [RSP + 0x48]
ADDSD XMM4,XMM7
MULSD XMM4,XMM15
MOVAPD XMM1,XMM0
MULSD XMM1,qword ptr [RSP + 0x50]
MOVAPD XMM7,XMM3
MULSD XMM7,qword ptr [RSP + 0x58]
ADDSD XMM1,XMM7
MOVAPD XMM7,XMM6
MULSD XMM7,qword ptr [RSP + 0x60]
ADDSD XMM7,XMM1
MOVAPD XMM1,XMM13
MULSD XMM1,qword ptr [RSP + 0x68]
ADDSD XMM7,XMM1
MULSD XMM7,XMM14
ADDSD XMM7,XMM4
MOVAPD XMM1,XMM0
MULSD XMM1,qword ptr [RSP + 0x70]
MOVAPD XMM4,XMM3
MULSD XMM4,qword ptr [RSP + 0x78]
ADDSD XMM1,XMM4
MOVAPD XMM4,XMM6
MULSD XMM4,qword ptr [RSP + 0x80]
ADDSD XMM4,XMM1
MOVAPD XMM1,XMM13
MULSD XMM1,qword ptr [RSP + 0x88]
ADDSD XMM4,XMM1
MULSD XMM4,XMM5
ADDSD XMM7,XMM4
MOVAPD XMM1,XMM0
MULSD XMM1,qword ptr [RSP + 0x90]
MOVAPD XMM4,XMM3
MULSD XMM4,qword ptr [RSP + 0x98]
ADDSD XMM1,XMM4
MOVAPD XMM4,XMM6
MULSD XMM4,qword ptr [RSP + 0xa0]
ADDSD XMM4,XMM1
MOVAPD XMM1,XMM13
MULSD XMM1,qword ptr [RSP + 0xa8]
ADDSD XMM4,XMM1
MULSD XMM4,XMM11
ADDSD XMM7,XMM4
MOVSD XMM2,qword ptr [0x003f9c68]
UCOMISD XMM12,XMM7
JA 0x002557b3
MOVSD XMM2,qword ptr [0x003f9608]
MOVAPD XMM4,XMM7
MULSD XMM4,XMM2
UCOMISD XMM4,qword ptr [0x003f9600]
JC 0x002553e6
MOVSD XMM2,qword ptr [0x003f9608]
DIVSD XMM2,XMM7
JMP 0x002553ee
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
MOV EAX,0x1
JMP 0x00253e85
PXOR XMM3,XMM3
TEST R13B,0x4
JZ 0x00253e7a
TEST R10D,R10D
JZ 0x0025586a
MOV RAX,qword ptr [RCX + 0x8]
PXOR XMM0,XMM0
CVTSI2SD XMM0,R15
DIVSD XMM3,XMM0
MOV RSI,qword ptr [RSP + 0x18]
PXOR XMM5,XMM5
CVTSD2SS XMM5,XMM3
MOVSS dword ptr [RSI + RAX*0x4],XMM5
ADD RDI,0x1
MOV R9,qword ptr [RBX + 0x340]
CMP R9,RDI
JLE 0x00253e80
MOV RSI,qword ptr [RBX + 0x360]
MOV RDX,RDI
SHL RDX,0x4
MOV ECX,dword ptr [RSI + RDX*0x1]
SHL RCX,0x4
MOV R13D,dword ptr [RSI + RCX*0x1 + 0x4]
ADD RCX,qword ptr [RBP + 0x360]
MOV R10D,dword ptr [RCX + 0x4]
TEST R13D,R13D
JZ 0x0025586a
TEST R10D,R10D
JZ 0x0025586a
TEST R15,R15
JLE 0x00255834
LEA R11,[R9*0x4]
LEA RDX,[R12 + RDI*0x4]
MOV RAX,R14
PXOR XMM0,XMM0
CVTSS2SD XMM0,dword ptr [RDX]
MOVSD qword ptr [RAX],XMM0
ADD RDX,R11
ADD RAX,0x8
CMP R8,RAX
JNZ 0x002558c1
TEST R13B,0x4
JZ 0x00253e2a
MOV R11D,dword ptr [RSI + 0x44]
MOV RAX,R14
MOV EDX,0x0
PXOR XMM3,XMM3
MOVSD XMM7,qword ptr [0x003f9600]
MOVAPD XMM6,XMM7
MOVSD XMM5,qword ptr [0x003f9608]
JMP 0x00255934
MOVSD XMM0,qword ptr [RAX]
MOVAPD XMM12,XMM9
MOVAPD XMM1,XMM11
DIVSD XMM1,XMM12
MULSD XMM0,XMM1
ADDSD XMM3,XMM0
ADD RDX,R9
ADD RAX,0x8
CMP RAX,R8
JZ 0x00255842
TEST R11D,R11D
JZ 0x00255909
MOV R13,RDX
ADD R13,qword ptr [RSI + 0x48]
PXOR XMM12,XMM12
CVTSS2SD XMM12,dword ptr [R12 + R13*0x4]
MULSD XMM12,XMM10
MOVAPD XMM0,XMM12
MULSD XMM0,qword ptr [RAX]
MOVSD qword ptr [RAX],XMM0
MOVAPD XMM1,XMM8
MOVAPD XMM2,XMM12
CMPLTSD XMM2,XMM4
ANDPD XMM1,XMM2
ANDNPD XMM2,XMM5
ORPD XMM1,XMM2
MOVAPD XMM2,XMM12
MULSD XMM2,XMM1
UCOMISD XMM2,XMM7
JNC 0x00255912
DIVSD XMM1,XMM6
JMP 0x0025591c
CALL 0x0014c5c0
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined8\nInterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)\n\n{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment (function_definition "undefined8\nInterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)\n\n{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "InterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)" identifier (parameter_list "(double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)" ( (parameter_declaration "double param_1" primitive_type identifier) , (parameter_declaration "double param_2" primitive_type identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "long param_7" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_8" type_identifier identifier) ))) (compound_statement "{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "double *pdVar1;" primitive_type (pointer_declarator "*pdVar1" * identifier) ;) (declaration "float fVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "float fVar8;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "float fVar12;" primitive_type identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "float *pfVar15;" primitive_type (pointer_declarator "*pfVar15" * identifier) ;) (declaration "double *pdVar16;" primitive_type (pointer_declarator "*pdVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar18;" (sized_type_specifier "long" long) identifier ;) (declaration "float *pfVar19;" primitive_type (pointer_declarator "*pfVar19" * identifier) ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "float *pfVar21;" primitive_type (pointer_declarator "*pfVar21" * identifier) ;) (declaration "long lVar22;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "long lVar24;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar25;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar26;" primitive_type identifier ;) (declaration "double dVar27;" primitive_type identifier ;) (declaration "double dVar28;" primitive_type identifier ;) (declaration "double dVar29;" primitive_type identifier ;) (declaration "double dVar30;" primitive_type identifier ;) (declaration "double dVar31;" primitive_type identifier ;) (declaration "double dVar32;" primitive_type identifier ;) (declaration "double dVar33;" primitive_type identifier ;) (declaration "double dVar34;" primitive_type identifier ;) (declaration "double dVar35;" primitive_type identifier ;) (declaration "double dVar36;" primitive_type identifier ;) (declaration "double dVar37;" primitive_type identifier ;) (declaration "double dVar38;" primitive_type identifier ;) (declaration "double local_178;" primitive_type identifier ;) (declaration "double local_170;" primitive_type identifier ;) (declaration "long local_168;" (sized_type_specifier "long" long) identifier ;) (declaration "double local_160;" primitive_type identifier ;) (declaration "double local_148 [16];" primitive_type (array_declarator "local_148 [16]" identifier [ number_literal ]) ;) (declaration "double local_c8 [17];" primitive_type (array_declarator "local_c8 [17]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\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("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }" { comment (expression_statement "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;" (call_expression "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" identifier (argument_list "("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" ( (string_literal ""source != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" if (parenthesized_expression "(*(long *)(param_3 + 0x3450) != 0xabacadab)" ( (binary_expression "*(long *)(param_3 + 0x3450) != 0xabacadab" (pointer_expression "*(long *)(param_3 + 0x3450)" * (cast_expression "(long *)(param_3 + 0x3450)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3450)" ( (binary_expression "param_3 + 0x3450" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" { comment (expression_statement "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" identifier (argument_list "("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" ( (string_literal ""source->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (if_statement "if (param_4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" { comment (expression_statement "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" identifier (argument_list "("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" ( (string_literal ""source_view != (CacheView *) NULL"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (expression_statement "dVar26 = DAT_004294e8;" (assignment_expression "dVar26 = DAT_004294e8" identifier = identifier) ;) (if_statement "if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }" if (parenthesized_expression "(DAT_004294e8 <= param_1)" ( (binary_expression "DAT_004294e8 <= param_1" identifier <= identifier) )) (compound_statement "{\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }" { (expression_statement "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);" (assignment_expression "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" identifier = (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" ( (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1)" (cast_expression "(ulong)DAT_004294f0" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(DAT_004294f0 < param_1)" - (call_expression "(ulong)(DAT_004294f0 < param_1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) ))))) | (binary_expression "~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1" (unary_expression "~-(ulong)(DAT_004294f0 < param_1)" ~ (unary_expression "-(ulong)(DAT_004294f0 < param_1)" - (call_expression "(ulong)(DAT_004294f0 < param_1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) ))))) & (cast_expression "(ulong)param_1" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "dVar26 = floor(dVar26);" (assignment_expression "dVar26 = floor(dVar26)" identifier = (call_expression "floor(dVar26)" identifier (argument_list "(dVar26)" ( identifier )))) ;) (expression_statement "lVar25 = (long)dVar26;" (assignment_expression "lVar25 = (long)dVar26" identifier = (cast_expression "(long)dVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "dVar26 = DAT_004294e8;" (assignment_expression "dVar26 = DAT_004294e8" identifier = identifier) ;) (if_statement "if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }" if (parenthesized_expression "(DAT_004294e8 <= param_2)" ( (binary_expression "DAT_004294e8 <= param_2" identifier <= identifier) )) (compound_statement "{\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }" { (expression_statement "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);" (assignment_expression "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" identifier = (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" ( (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2)" (cast_expression "(ulong)DAT_004294f0" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(DAT_004294f0 < param_2)" - (call_expression "(ulong)(DAT_004294f0 < param_2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) ))))) | (binary_expression "~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2" (unary_expression "~-(ulong)(DAT_004294f0 < param_2)" ~ (unary_expression "-(ulong)(DAT_004294f0 < param_2)" - (call_expression "(ulong)(DAT_004294f0 < param_2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) ))))) & (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "dVar26 = floor(dVar26);" (assignment_expression "dVar26 = floor(dVar26)" identifier = (call_expression "floor(dVar26)" identifier (argument_list "(dVar26)" ( identifier )))) ;) (expression_statement "local_168 = (long)dVar26;" (assignment_expression "local_168 = (long)dVar26" identifier = (cast_expression "(long)dVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }" { (expression_statement "param_6 = *(int *)(param_3 + 0x2f8);" (assignment_expression "param_6 = *(int *)(param_3 + 0x2f8)" identifier = (pointer_expression "*(int *)(param_3 + 0x2f8)" * (cast_expression "(int *)(param_3 + 0x2f8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2f8)" ( (binary_expression "param_3 + 0x2f8" identifier + number_literal) ))))) ;) })) (expression_statement "local_178 = param_1;" (assignment_expression "local_178 = param_1" identifier = identifier) ;) (expression_statement "local_170 = param_2;" (assignment_expression "local_170 = param_2" identifier = identifier) ;) (switch_statement "switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }" switch (parenthesized_expression "(param_6)" ( identifier )) (compound_statement "{\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }" { (case_statement "default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" default : (expression_statement "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier (argument_list "(param_4,lVar25,local_168,2,2,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar13 != 0)" ( (binary_expression "lVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar24 < 1)" ( (binary_expression "lVar24 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" do (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" { (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar20 * 0x10)" ( (binary_expression "lVar18 + lVar20 * 0x10" identifier + (binary_expression "lVar20 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" identifier = (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" * (cast_expression "(uint *)(lVar18 + 4 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4 + lVar17)" ( (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = *(int *)(lVar17 + 4);" (assignment_expression "iVar3 = *(int *)(lVar17 + 4)" identifier = (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }" if (parenthesized_expression "((uVar23 != 0) && (iVar3 != 0))" ( (binary_expression "(uVar23 != 0) && (iVar3 != 0)" (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }" { (expression_statement "dVar31 = param_1 - (double)lVar25;" (assignment_expression "dVar31 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar34 = param_2 - (double)local_168;" (assignment_expression "dVar34 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar32 = dVar26 - dVar31;" (assignment_expression "dVar32 = dVar26 - dVar31" identifier = (binary_expression "dVar26 - dVar31" identifier - identifier)) ;) (expression_statement "dVar37 = dVar26 - dVar34;" (assignment_expression "dVar37 = dVar26 - dVar34" identifier = (binary_expression "dVar26 - dVar34" identifier - identifier)) ;) (expression_statement "dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);" (assignment_expression "dVar28 = (double)*(float *)(lVar13 + lVar20 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar20 * 4)" * (cast_expression "(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar20 * 4)" ( (binary_expression "lVar13 + lVar20 * 4" identifier + (binary_expression "lVar20 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);" (assignment_expression "dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar20 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar20 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar20 + lVar24) * 4" identifier + (binary_expression "(lVar20 + lVar24) * 4" (parenthesized_expression "(lVar20 + lVar24)" ( (binary_expression "lVar20 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (expression_statement "lVar22 = lVar20 + lVar24 * 2;" (assignment_expression "lVar22 = lVar20 + lVar24 * 2" identifier = (binary_expression "lVar20 + lVar24 * 2" identifier + (binary_expression "lVar24 * 2" identifier * number_literal))) ;) (expression_statement "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);" (assignment_expression "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 * 4)" ( (binary_expression "lVar13 + lVar22 * 4" identifier + (binary_expression "lVar22 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);" (assignment_expression "dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar22 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar22 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar22 + lVar24) * 4" identifier + (binary_expression "(lVar22 + lVar24) * 4" (parenthesized_expression "(lVar22 + lVar24)" ( (binary_expression "lVar22 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (if_statement "if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }" { (expression_statement "dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;" (assignment_expression "dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34" identifier = (binary_expression "dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34" (binary_expression "dVar37 * (dVar31 + dVar32)" identifier * (parenthesized_expression "(dVar31 + dVar32)" ( (binary_expression "dVar31 + dVar32" identifier + identifier) ))) + (binary_expression "(dVar31 + dVar32) * dVar34" (parenthesized_expression "(dVar31 + dVar32)" ( (binary_expression "dVar31 + dVar32" identifier + identifier) )) * identifier))) ;) (expression_statement "dVar38 = DAT_003f9c68;" (assignment_expression "dVar38 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar27)" ( (binary_expression "0.0 <= dVar27" number_literal <= identifier) )) (compound_statement "{\n                dVar38 = DAT_003f9608;\n              }" { (expression_statement "dVar38 = DAT_003f9608;" (assignment_expression "dVar38 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }" if (parenthesized_expression "(dVar38 * dVar27 < DAT_003f9600)" ( (binary_expression "dVar38 * dVar27 < DAT_003f9600" (binary_expression "dVar38 * dVar27" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar27 = dVar38 / DAT_003f9600;\n              }" { (expression_statement "dVar27 = dVar38 / DAT_003f9600;" (assignment_expression "dVar27 = dVar38 / DAT_003f9600" identifier = (binary_expression "dVar38 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }" else (compound_statement "{\n                dVar27 = DAT_003f9608 / dVar27;\n              }" { (expression_statement "dVar27 = DAT_003f9608 / dVar27;" (assignment_expression "dVar27 = DAT_003f9608 / dVar27" identifier = (binary_expression "DAT_003f9608 / dVar27" identifier / identifier)) ;) }))) (if_statement "if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" ( (binary_expression "(dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27" (parenthesized_expression "(dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33))" ( (binary_expression "dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)" (binary_expression "dVar37 * (dVar28 * dVar32 + dVar35 * dVar31)" identifier * (parenthesized_expression "(dVar28 * dVar32 + dVar35 * dVar31)" ( (binary_expression "dVar28 * dVar32 + dVar35 * dVar31" (binary_expression "dVar28 * dVar32" identifier * identifier) + (binary_expression "dVar35 * dVar31" identifier * identifier)) ))) + (binary_expression "dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)" identifier * (parenthesized_expression "(dVar31 * dVar36 + dVar32 * dVar33)" ( (binary_expression "dVar31 * dVar36 + dVar32 * dVar33" (binary_expression "dVar31 * dVar36" identifier * identifier) + (binary_expression "dVar32 * dVar33" identifier * identifier)) )))) )) * identifier) )))) ;) })) }) (else_clause "else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" else (compound_statement "{\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" { (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar38 = dVar26;" (assignment_expression "dVar38 = dVar26" identifier = identifier) ;) (expression_statement "dVar27 = dVar26;" (assignment_expression "dVar27 = dVar26" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" if (parenthesized_expression "(*(int *)(lVar18 + 0x44) != 0)" ( (binary_expression "*(int *)(lVar18 + 0x44) != 0" (pointer_expression "*(int *)(lVar18 + 0x44)" * (cast_expression "(int *)(lVar18 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x44)" ( (binary_expression "lVar18 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" { (expression_statement "lVar22 = *(long *)(lVar18 + 0x48) * 4;" (assignment_expression "lVar22 = *(long *)(lVar18 + 0x48) * 4" identifier = (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;" (assignment_expression "dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 8)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 8)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 8" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 8" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;" (assignment_expression "dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 4)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 4" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 4" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;" (assignment_expression "dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" * (cast_expression "(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (binary_expression "lVar13 + *(long *)(lVar18 + 0x48) * 4" identifier + (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ))))) * identifier)) ;) (expression_statement "fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);" (assignment_expression "fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc)" identifier = (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 0xc)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 0xc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 0xc)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 0xc" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 0xc" identifier * number_literal)) ))))) ;) })) (expression_statement "dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;" (assignment_expression "dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" identifier = (binary_expression "(dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" (binary_expression "(dVar32 * dVar27 + dVar31 * dVar38) * dVar37" (parenthesized_expression "(dVar32 * dVar27 + dVar31 * dVar38)" ( (binary_expression "dVar32 * dVar27 + dVar31 * dVar38" (binary_expression "dVar32 * dVar27" identifier * identifier) + (binary_expression "dVar31 * dVar38" identifier * identifier)) )) * identifier) + (binary_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" (parenthesized_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30)" ( (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60" (binary_expression "dVar31 * (double)fVar9" identifier * (cast_expression "(double)fVar9" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) + (binary_expression "dVar32 * dVar30" identifier * identifier)) )) * identifier))) ;) (expression_statement "dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);" (assignment_expression "dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" identifier = (cast_expression "(double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" ( (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608" (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398)" (cast_expression "(ulong)DAT_003f9c68" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(dVar29 < DAT_003fa398)" - (call_expression "(ulong)(dVar29 < DAT_003fa398)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar29 < DAT_003fa398)" ( (binary_expression "dVar29 < DAT_003fa398" identifier < identifier) ))))) | (binary_expression "~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar29 < DAT_003fa398)" ~ (unary_expression "-(ulong)(dVar29 < DAT_003fa398)" - (call_expression "(ulong)(dVar29 < DAT_003fa398)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar29 < DAT_003fa398)" ( (binary_expression "dVar29 < DAT_003fa398" identifier < identifier) ))))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) (if_statement "if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" if (parenthesized_expression "(dVar10 * dVar29 < DAT_003f9600)" ( (binary_expression "dVar10 * dVar29 < DAT_003f9600" (binary_expression "dVar10 * dVar29" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar29 = dVar10 / DAT_003f9600;\n              }" { (expression_statement "dVar29 = dVar10 / DAT_003f9600;" (assignment_expression "dVar29 = dVar10 / DAT_003f9600" identifier = (binary_expression "dVar10 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" else (compound_statement "{\n                dVar29 = DAT_003f9608 / dVar29;\n              }" { (expression_statement "dVar29 = DAT_003f9608 / dVar29;" (assignment_expression "dVar29 = DAT_003f9608 / dVar29" identifier = (binary_expression "DAT_003f9608 / dVar29" identifier / identifier)) ;) }))) (if_statement "if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" ( (binary_expression "dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30))" identifier * (parenthesized_expression "(dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30))" ( (binary_expression "dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" (binary_expression "dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                )" identifier * (parenthesized_expression "(dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                )" ( (binary_expression "dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31" (binary_expression "dVar28 * dVar27 * dVar32" (binary_expression "dVar28 * dVar27" identifier * identifier) * identifier) + (binary_expression "dVar35 * dVar38 * dVar31" (binary_expression "dVar35 * dVar38" identifier * identifier) * identifier)) ))) + (binary_expression "dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" identifier * (parenthesized_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" ( (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60" (binary_expression "dVar31 * (double)fVar9" identifier * (cast_expression "(double)fVar9" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) * identifier) + (binary_expression "dVar32 * dVar33 * dVar30" (binary_expression "dVar32 * dVar33" identifier * identifier) * identifier)) )))) ))) )))) ;) })) }))) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar20 < lVar24)" ( (binary_expression "lVar20 < lVar24" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:" case number_literal :) (case_statement "case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (if_statement "if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" if (parenthesized_expression "(param_6 == 2)" ( (binary_expression "param_6 == 2" identifier == number_literal) )) (compound_statement "{\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }" { (if_statement "if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" if (parenthesized_expression "(param_1 < DAT_004294e8)" ( (binary_expression "param_1 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n        local_178 = DAT_004294e8;\n      }" { (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" else (if_statement "if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" if (parenthesized_expression "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) )) (compound_statement "{\n        local_178 = DAT_004294f0;\n      }" { (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "local_178 = local_178 + DAT_003f9c28;" (assignment_expression "local_178 = local_178 + DAT_003f9c28" identifier = (binary_expression "local_178 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" if (parenthesized_expression "((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30)" ( (binary_expression "(double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_178 & DAT_003f9c70)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)local_178 & DAT_003f9c70)" ( (binary_expression "(ulong)local_178 & DAT_003f9c70" (cast_expression "(ulong)local_178" ( (type_descriptor "ulong" type_identifier) ) identifier) & identifier) ))) < identifier) )) (compound_statement "{\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" { (expression_statement "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );" (assignment_expression "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" identifier = (cast_expression "(double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" ( (binary_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178" (call_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" ( (binary_expression "(double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_178" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_178" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) - (cast_expression "(double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" ( (binary_expression "-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_178 < (double)(long)local_178)" - (call_expression "(ulong)(local_178 < (double)(long)local_178)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_178 < (double)(long)local_178)" ( (binary_expression "local_178 < (double)(long)local_178" identifier < (cast_expression "(double)(long)local_178" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_178" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ))) | (binary_expression "~DAT_003f9c70 & (ulong)local_178" (unary_expression "~DAT_003f9c70" ~ identifier) & (cast_expression "(ulong)local_178" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "lVar25 = (long)(local_178 - DAT_003f9608);" (assignment_expression "lVar25 = (long)(local_178 - DAT_003f9608)" identifier = (cast_expression "(long)(local_178 - DAT_003f9608)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(local_178 - DAT_003f9608)" ( (binary_expression "local_178 - DAT_003f9608" identifier - identifier) )))) ;) (if_statement "if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" if (parenthesized_expression "(param_2 < DAT_004294e8)" ( (binary_expression "param_2 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n        local_170 = DAT_004294e8;\n      }" { (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" else (if_statement "if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" if (parenthesized_expression "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) )) (compound_statement "{\n        local_170 = DAT_004294f0;\n      }" { (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "local_170 = local_170 + DAT_003f9c28;" (assignment_expression "local_170 = local_170 + DAT_003f9c28" identifier = (binary_expression "local_170 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" if (parenthesized_expression "((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30)" ( (binary_expression "(double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_170 & DAT_003f9c70)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)local_170 & DAT_003f9c70)" ( (binary_expression "(ulong)local_170 & DAT_003f9c70" (cast_expression "(ulong)local_170" ( (type_descriptor "ulong" type_identifier) ) identifier) & identifier) ))) < identifier) )) (compound_statement "{\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" { (expression_statement "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );" (assignment_expression "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" identifier = (cast_expression "(double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" ( (binary_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170" (call_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" ( (binary_expression "(double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_170" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_170" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) - (cast_expression "(double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" ( (binary_expression "-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_170 < (double)(long)local_170)" - (call_expression "(ulong)(local_170 < (double)(long)local_170)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_170 < (double)(long)local_170)" ( (binary_expression "local_170 < (double)(long)local_170" identifier < (cast_expression "(double)(long)local_170" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_170" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ))) | (binary_expression "~DAT_003f9c70 & (ulong)local_170" (unary_expression "~DAT_003f9c70" ~ identifier) & (cast_expression "(ulong)local_170" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "local_168 = (long)(local_170 - DAT_003f9608);" (assignment_expression "local_168 = (long)(local_170 - DAT_003f9608)" identifier = (cast_expression "(long)(local_170 - DAT_003f9608)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(local_170 - DAT_003f9608)" ( (binary_expression "local_170 - DAT_003f9608" identifier - identifier) )))) ;) (expression_statement "lVar13 = 3;" (assignment_expression "lVar13 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" else (compound_statement "{\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" { (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" identifier = number_literal) ;) (if_statement "if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }" if (parenthesized_expression "(param_6 == 3)" ( (binary_expression "param_6 == 3" identifier == number_literal) )) (compound_statement "{\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }" { (expression_statement "lVar25 = lVar25 + -1;" (assignment_expression "lVar25 = lVar25 + -1" identifier = (binary_expression "lVar25 + -1" identifier + number_literal)) ;) (expression_statement "local_168 = local_168 + -1;" (assignment_expression "local_168 = local_168 + -1" identifier = (binary_expression "local_168 + -1" identifier + number_literal)) ;) (expression_statement "lVar13 = 4;" (assignment_expression "lVar13 = 4" identifier = number_literal) ;) })) }))) (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8)" identifier (argument_list "(param_4,lVar25,local_168,lVar13,lVar13,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "dVar31 = DAT_003f9c68;" (assignment_expression "dVar31 = DAT_003f9c68" identifier = identifier) ;) (expression_statement "dVar28 = DAT_003f9c60;" (assignment_expression "dVar28 = DAT_003f9c60" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = lVar13 * lVar13;" (assignment_expression "lVar13 = lVar13 * lVar13" identifier = (binary_expression "lVar13 * lVar13" identifier * identifier)) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar24 < 1)" ( (binary_expression "lVar24 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" { (expression_statement "pdVar1 = local_c8 + lVar13;" (assignment_expression "pdVar1 = local_c8 + lVar13" identifier = (binary_expression "local_c8 + lVar13" identifier + identifier)) ;) (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" do (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" { (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar20 * 0x10)" ( (binary_expression "lVar18 + lVar20 * 0x10" identifier + (binary_expression "lVar20 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" identifier = (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" * (cast_expression "(uint *)(lVar18 + 4 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4 + lVar17)" ( (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = *(int *)(lVar17 + 4);" (assignment_expression "iVar3 = *(int *)(lVar17 + 4)" identifier = (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }" if (parenthesized_expression "((uVar23 != 0) && (iVar3 != 0))" ( (binary_expression "(uVar23 != 0) && (iVar3 != 0)" (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }" { (if_statement "if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" if (parenthesized_expression "(lVar13 == 0)" ( (binary_expression "lVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }" { (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (if_statement "if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }" { (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00253e49;" goto statement_identifier ;) })) }) (else_clause "else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" else (compound_statement "{\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" { (expression_statement "pfVar15 = (float *)(lVar25 + lVar20 * 4);" (assignment_expression "pfVar15 = (float *)(lVar25 + lVar20 * 4)" identifier = (cast_expression "(float *)(lVar25 + lVar20 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar20 * 4)" ( (binary_expression "lVar25 + lVar20 * 4" identifier + (binary_expression "lVar20 * 4" identifier * number_literal)) )))) ;) (expression_statement "pdVar16 = local_c8;" (assignment_expression "pdVar16 = local_c8" identifier = identifier) ;) (do_statement "do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);" do (compound_statement "{\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              }" { (expression_statement "*pdVar16 = (double)*pfVar15;" (assignment_expression "*pdVar16 = (double)*pfVar15" (pointer_expression "*pdVar16" * identifier) = (cast_expression "(double)*pfVar15" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar15" * identifier))) ;) (expression_statement "pfVar15 = pfVar15 + lVar24;" (assignment_expression "pfVar15 = pfVar15 + lVar24" identifier = (binary_expression "pfVar15 + lVar24" identifier + identifier)) ;) (expression_statement "pdVar16 = pdVar16 + 1;" (assignment_expression "pdVar16 = pdVar16 + 1" identifier = (binary_expression "pdVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar1 != pdVar16)" ( (binary_expression "pdVar1 != pdVar16" identifier != identifier) )) ;) (if_statement "if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (do_statement "do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);" do (compound_statement "{\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                }" { (expression_statement "dVar32 = dVar32 + local_c8[lVar24];" (assignment_expression "dVar32 = dVar32 + local_c8[lVar24]" identifier = (binary_expression "dVar32 + local_c8[lVar24]" identifier + (subscript_expression "local_c8[lVar24]" identifier [ identifier ]))) ;) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 - lVar24 != 0 && lVar24 <= lVar13)" ( (binary_expression "lVar13 - lVar24 != 0 && lVar24 <= lVar13" (binary_expression "lVar13 - lVar24 != 0" (binary_expression "lVar13 - lVar24" identifier - identifier) != number_literal) && (binary_expression "lVar24 <= lVar13" identifier <= identifier)) )) ;) (labeled_statement "LAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" statement_identifier : (if_statement "if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar32 / (double)lVar13)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar32 / (double)lVar13)" ( (binary_expression "dVar32 / (double)lVar13" identifier / (cast_expression "(double)lVar13" ( (type_descriptor "double" primitive_type) ) identifier)) )))) ;) }))) (goto_statement "goto LAB_0025586a;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)(lVar18 + 0x44);" (assignment_expression "iVar4 = *(int *)(lVar18 + 0x44)" identifier = (pointer_expression "*(int *)(lVar18 + 0x44)" * (cast_expression "(int *)(lVar18 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x44)" ( (binary_expression "lVar18 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (expression_statement "pdVar16 = local_c8;" (assignment_expression "pdVar16 = local_c8" identifier = identifier) ;) (do_statement "do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);" do (compound_statement "{\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              }" { (if_statement "if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }" { (expression_statement "dVar33 = *pdVar16;" (assignment_expression "dVar33 = *pdVar16" identifier = (pointer_expression "*pdVar16" * identifier)) ;) (expression_statement "dVar34 = dVar26;" (assignment_expression "dVar34 = dVar26" identifier = identifier) ;) (labeled_statement "LAB_00255912:\n                  dVar35 = dVar26 / dVar34;" statement_identifier : (expression_statement "dVar35 = dVar26 / dVar34;" (assignment_expression "dVar35 = dVar26 / dVar34" identifier = (binary_expression "dVar26 / dVar34" identifier / identifier)) ;)) }) (else_clause "else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" else (compound_statement "{\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" { (expression_statement "dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;" (assignment_expression "dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28" identifier = (binary_expression "(double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28" (cast_expression "(double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" * (cast_expression "(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" ( (binary_expression "lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4" identifier + (binary_expression "(lVar22 + *(long *)(lVar18 + 0x48)) * 4" (parenthesized_expression "(lVar22 + *(long *)(lVar18 + 0x48))" ( (binary_expression "lVar22 + *(long *)(lVar18 + 0x48)" identifier + (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) ))))) )) * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar33 = dVar34 * *pdVar16;" (assignment_expression "dVar33 = dVar34 * *pdVar16" identifier = (binary_expression "dVar34 * *pdVar16" identifier * (pointer_expression "*pdVar16" * identifier))) ;) (expression_statement "*pdVar16 = dVar33;" (assignment_expression "*pdVar16 = dVar33" (pointer_expression "*pdVar16" * identifier) = identifier) ;) (expression_statement "dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);" (assignment_expression "dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" identifier = (cast_expression "(double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" ( (binary_expression "(ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608" (binary_expression "(ulong)dVar31 & -(ulong)(dVar34 < 0.0)" (cast_expression "(ulong)dVar31" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(dVar34 < 0.0)" - (call_expression "(ulong)(dVar34 < 0.0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar34 < 0.0)" ( (binary_expression "dVar34 < 0.0" identifier < number_literal) ))))) | (binary_expression "~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar34 < 0.0)" ~ (unary_expression "-(ulong)(dVar34 < 0.0)" - (call_expression "(ulong)(dVar34 < 0.0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar34 < 0.0)" ( (binary_expression "dVar34 < 0.0" identifier < number_literal) ))))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) (if_statement "if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;" if (parenthesized_expression "(DAT_003f9600 <= dVar34 * dVar35)" ( (binary_expression "DAT_003f9600 <= dVar34 * dVar35" identifier <= (binary_expression "dVar34 * dVar35" identifier * identifier)) )) (goto_statement "goto LAB_00255912;" goto statement_identifier ;)) (expression_statement "dVar35 = dVar35 / DAT_003f9600;" (assignment_expression "dVar35 = dVar35 / DAT_003f9600" identifier = (binary_expression "dVar35 / DAT_003f9600" identifier / identifier)) ;) }))) (expression_statement "dVar32 = dVar32 + dVar33 * dVar35;" (assignment_expression "dVar32 = dVar32 + dVar33 * dVar35" identifier = (binary_expression "dVar32 + dVar33 * dVar35" identifier + (binary_expression "dVar33 * dVar35" identifier * identifier))) ;) (expression_statement "lVar22 = lVar22 + lVar24;" (assignment_expression "lVar22 = lVar22 + lVar24" identifier = (binary_expression "lVar22 + lVar24" identifier + identifier)) ;) (expression_statement "pdVar16 = pdVar16 + 1;" (assignment_expression "pdVar16 = pdVar16 + 1" identifier = (binary_expression "pdVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar16 != pdVar1)" ( (binary_expression "pdVar16 != pdVar1" identifier != identifier) )) ;) }))) (if_statement "if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar32 / (double)lVar13)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar32 / (double)lVar13)" ( (binary_expression "dVar32 / (double)lVar13" identifier / (cast_expression "(double)lVar13" ( (type_descriptor "double" primitive_type) ) identifier)) )))) ;) })) })) (labeled_statement "LAB_0025586a:\n          lVar20 = lVar20 + 1;" statement_identifier : (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;)) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar20 < lVar24)" ( (binary_expression "lVar20 < lVar24" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier = (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier (argument_list "(param_4,lVar25,local_168,2,2,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier ))))) ;) (expression_statement "dVar31 = _DAT_004294f8;" (assignment_expression "dVar31 = _DAT_004294f8" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9600;" (assignment_expression "dVar26 = DAT_003f9600" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(pfVar15 != (float *)0x0)" ( (binary_expression "pfVar15 != (float *)0x0" identifier != (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar13 < 1)" ( (binary_expression "lVar13 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" identifier = identifier) ;) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" do (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" { (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);" (assignment_expression "uVar23 = *(uint *)(lVar20 + lVar24 * 0x10)" identifier = (pointer_expression "*(uint *)(lVar20 + lVar24 * 0x10)" * (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + lVar24 * 0x10)" ( (binary_expression "lVar20 + lVar24 * 0x10" identifier + (binary_expression "lVar24 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "lVar18 = (ulong)uVar23 * 0x10;" (assignment_expression "lVar18 = (ulong)uVar23 * 0x10" identifier = (binary_expression "(ulong)uVar23 * 0x10" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(lVar20 + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(lVar20 + 4 + lVar18) != 0" (pointer_expression "*(int *)(lVar20 + 4 + lVar18)" * (cast_expression "(int *)(lVar20 + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 4 + lVar18)" ( (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" identifier + number_literal) + identifier) )))) != number_literal) ))) )) (compound_statement "{\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }" { (if_statement "if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" if (parenthesized_expression "(*(int *)(param_3 + 0x33c) == 4)" ( (binary_expression "*(int *)(param_3 + 0x33c) == 4" (pointer_expression "*(int *)(param_3 + 0x33c)" * (cast_expression "(int *)(param_3 + 0x33c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x33c)" ( (binary_expression "param_3 + 0x33c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }" { (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" identifier = (pointer_expression "*(int *)(lVar20 + 0x44)" * (cast_expression "(int *)(lVar20 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x44)" ( (binary_expression "lVar20 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);" do (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" { (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" { (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier = (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier [ (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" identifier + (pointer_expression "*(long *)(lVar20 + 0x48)" * (cast_expression "(long *)(lVar20 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) ))))) ])) ;) })) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (if_statement "if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" if (parenthesized_expression "(uVar23 == 4)" ( (binary_expression "uVar23 == 4" identifier == number_literal) )) (compound_statement "{\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }" { (expression_statement "local_c8[lVar17] = (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ]))) ;) }) (else_clause "else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" else (compound_statement "{\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" { (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ])))) ;) }))) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" identifier = (binary_expression "lVar22 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar17 != 4)" ( (binary_expression "lVar17 != 4" identifier != number_literal) )) ;) }) (else_clause "else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" else (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" identifier = identifier) ;) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);" do (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" { (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" identifier = (binary_expression "pfVar19 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar20 != 4)" ( (binary_expression "lVar20 != 4" identifier != number_literal) )) ;) }))) (expression_statement "dVar33 = param_2 - (double)local_168;" (assignment_expression "dVar33 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" if (parenthesized_expression "(dVar31 <= dVar33)" ( (binary_expression "dVar31 <= dVar33" identifier <= identifier) )) (compound_statement "{\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }" { (expression_statement "local_148[0] = local_148[2];" (assignment_expression "local_148[0] = local_148[2]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (subscript_expression "local_148[2]" identifier [ number_literal ])) ;) (expression_statement "local_c8[0] = local_c8[2];" (assignment_expression "local_c8[0] = local_c8[2]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (subscript_expression "local_c8[2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00254349:\n              local_148[1] = local_148[3];" statement_identifier : (expression_statement "local_148[1] = local_148[3];" (assignment_expression "local_148[1] = local_148[3]" (subscript_expression "local_148[1]" identifier [ number_literal ]) = (subscript_expression "local_148[3]" identifier [ number_literal ])) ;)) (expression_statement "local_c8[1] = local_c8[3];" (assignment_expression "local_c8[1] = local_c8[3]" (subscript_expression "local_c8[1]" identifier [ number_literal ]) = (subscript_expression "local_c8[3]" identifier [ number_literal ])) ;) }) (else_clause "else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" else (if_statement "if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" if (parenthesized_expression "(dVar33 <= DAT_00407738)" ( (binary_expression "dVar33 <= DAT_00407738" identifier <= identifier) )) (compound_statement "{\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }" { (if_statement "if (_DAT_004294f8 <= dVar33) goto LAB_00254349;" if (parenthesized_expression "(_DAT_004294f8 <= dVar33)" ( (binary_expression "_DAT_004294f8 <= dVar33" identifier <= identifier) )) (goto_statement "goto LAB_00254349;" goto statement_identifier ;)) (if_statement "if (DAT_00407738 < dVar33) goto LAB_002544fd;" if (parenthesized_expression "(DAT_00407738 < dVar33)" ( (binary_expression "DAT_00407738 < dVar33" identifier < identifier) )) (goto_statement "goto LAB_002544fd;" goto statement_identifier ;)) }) (else_clause "else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" else (compound_statement "{\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" { (expression_statement "local_148[0] = local_148[0] + local_148[2];" (assignment_expression "local_148[0] = local_148[0] + local_148[2]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (binary_expression "local_148[0] + local_148[2]" (subscript_expression "local_148[0]" identifier [ number_literal ]) + (subscript_expression "local_148[2]" identifier [ number_literal ]))) ;) (expression_statement "local_c8[0] = local_c8[0] + local_c8[2];" (assignment_expression "local_c8[0] = local_c8[0] + local_c8[2]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (binary_expression "local_c8[0] + local_c8[2]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) + (subscript_expression "local_c8[2]" identifier [ number_literal ]))) ;) (expression_statement "dVar32 = DAT_00407728;" (assignment_expression "dVar32 = DAT_00407728" identifier = identifier) ;) (if_statement "if (_DAT_004294f8 <= dVar33) goto LAB_00254349;" if (parenthesized_expression "(_DAT_004294f8 <= dVar33)" ( (binary_expression "_DAT_004294f8 <= dVar33" identifier <= identifier) )) (goto_statement "goto LAB_00254349;" goto statement_identifier ;)) (labeled_statement "LAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];" statement_identifier : (expression_statement "local_148[1] = local_148[1] + local_148[3];" (assignment_expression "local_148[1] = local_148[1] + local_148[3]" (subscript_expression "local_148[1]" identifier [ number_literal ]) = (binary_expression "local_148[1] + local_148[3]" (subscript_expression "local_148[1]" identifier [ number_literal ]) + (subscript_expression "local_148[3]" identifier [ number_literal ]))) ;)) (expression_statement "local_c8[1] = local_c8[1] + local_c8[3];" (assignment_expression "local_c8[1] = local_c8[1] + local_c8[3]" (subscript_expression "local_c8[1]" identifier [ number_literal ]) = (binary_expression "local_c8[1] + local_c8[3]" (subscript_expression "local_c8[1]" identifier [ number_literal ]) + (subscript_expression "local_c8[3]" identifier [ number_literal ]))) ;) (expression_statement "dVar32 = DAT_00407728;" (assignment_expression "dVar32 = DAT_00407728" identifier = identifier) ;) }))))) (if_statement "if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" if (parenthesized_expression "(param_1 - (double)lVar25 < dVar31)" ( (binary_expression "param_1 - (double)lVar25 < dVar31" (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }" { (if_statement "if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }" if (parenthesized_expression "(DAT_00407738 < param_1 - (double)lVar25)" ( (binary_expression "DAT_00407738 < param_1 - (double)lVar25" identifier < (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) )) (compound_statement "{\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }" { (expression_statement "dVar32 = dVar32 + dVar32;" (assignment_expression "dVar32 = dVar32 + dVar32" identifier = (binary_expression "dVar32 + dVar32" identifier + identifier)) ;) (expression_statement "local_148[0] = local_148[0] + local_148[1];" (assignment_expression "local_148[0] = local_148[0] + local_148[1]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (binary_expression "local_148[0] + local_148[1]" (subscript_expression "local_148[0]" identifier [ number_literal ]) + (subscript_expression "local_148[1]" identifier [ number_literal ]))) ;) (expression_statement "local_c8[0] = local_c8[0] + local_c8[1];" (assignment_expression "local_c8[0] = local_c8[0] + local_c8[1]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (binary_expression "local_c8[0] + local_c8[1]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) + (subscript_expression "local_c8[1]" identifier [ number_literal ]))) ;) })) }) (else_clause "else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" else (compound_statement "{\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" { (expression_statement "local_148[0] = local_148[1];" (assignment_expression "local_148[0] = local_148[1]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (subscript_expression "local_148[1]" identifier [ number_literal ])) ;) (expression_statement "local_c8[0] = local_c8[1];" (assignment_expression "local_c8[0] = local_c8[1]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (subscript_expression "local_c8[1]" identifier [ number_literal ])) ;) }))) (if_statement "if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" if (parenthesized_expression "(uVar23 == 4)" ( (binary_expression "uVar23 == 4" identifier == number_literal) )) (compound_statement "{\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }" { (expression_statement "dVar33 = DAT_003fa390;" (assignment_expression "dVar33 = DAT_003fa390" identifier = identifier) ;) (if_statement "if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }" if (parenthesized_expression "(dVar26 <= dVar32)" ( (binary_expression "dVar26 <= dVar32" identifier <= identifier) )) (compound_statement "{\n                dVar33 = dVar28 / dVar32;\n              }" { (expression_statement "dVar33 = dVar28 / dVar32;" (assignment_expression "dVar33 = dVar28 / dVar32" identifier = (binary_expression "dVar28 / dVar32" identifier / identifier)) ;) })) }) (else_clause "else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" else (compound_statement "{\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" { (expression_statement "dVar32 = DAT_003f9c68;" (assignment_expression "dVar32 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= local_148[0])" ( (binary_expression "0.0 <= local_148[0]" number_literal <= (subscript_expression "local_148[0]" identifier [ number_literal ])) )) (compound_statement "{\n                dVar32 = DAT_003f9608;\n              }" { (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" if (parenthesized_expression "(local_148[0] * dVar32 < dVar26)" ( (binary_expression "local_148[0] * dVar32 < dVar26" (binary_expression "local_148[0] * dVar32" (subscript_expression "local_148[0]" identifier [ number_literal ]) * identifier) < identifier) )) (compound_statement "{\n                dVar33 = dVar32 / dVar26;\n              }" { (expression_statement "dVar33 = dVar32 / dVar26;" (assignment_expression "dVar33 = dVar32 / dVar26" identifier = (binary_expression "dVar32 / dVar26" identifier / identifier)) ;) }) (else_clause "else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" else (compound_statement "{\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" { (expression_statement "dVar33 = DAT_003f9608 / local_148[0];" (assignment_expression "dVar33 = DAT_003f9608 / local_148[0]" identifier = (binary_expression "DAT_003f9608 / local_148[0]" identifier / (subscript_expression "local_148[0]" identifier [ number_literal ]))) ;) }))) }))) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }" if (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" ( (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" * (cast_expression "(int *)(lVar18 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4)" ( (binary_expression "lVar18 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0])" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" identifier + (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" * (cast_expression "(long *)(lVar18 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 8)" ( (binary_expression "lVar18 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar33 * local_c8[0])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar33 * local_c8[0])" ( (binary_expression "dVar33 * local_c8[0]" identifier * (subscript_expression "local_c8[0]" identifier [ number_literal ])) )))) ;) })) })) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" identifier = (binary_expression "pfVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar24 < lVar13)" ( (binary_expression "lVar24 < lVar13" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier = (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier (argument_list "(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( identifier , (binary_expression "lVar25 + -1" identifier + number_literal) , (binary_expression "local_168 + -1" identifier + number_literal) , number_literal , number_literal , identifier ))))) ;) (expression_statement "dVar28 = DAT_00406598;" (assignment_expression "dVar28 = DAT_00406598" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(pfVar15 != (float *)0x0)" ( (binary_expression "pfVar15 != (float *)0x0" identifier != (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar13 < 1)" ( (binary_expression "lVar13 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" identifier = identifier) ;) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" do (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" { (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;" (assignment_expression "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + lVar24 * 0x10)" ( (binary_expression "lVar20 + lVar24 * 0x10" identifier + (binary_expression "lVar24 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar20 + 4 + lVar18);" (assignment_expression "uVar23 = *(uint *)(lVar20 + 4 + lVar18)" identifier = (pointer_expression "*(uint *)(lVar20 + 4 + lVar18)" * (cast_expression "(uint *)(lVar20 + 4 + lVar18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 4 + lVar18)" ( (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }" { (expression_statement "uVar23 = uVar23 & 4;" (assignment_expression "uVar23 = uVar23 & 4" identifier = (binary_expression "uVar23 & 4" identifier & number_literal)) ;) (if_statement "if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" identifier = identifier) ;) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);" do (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" { (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" identifier = (binary_expression "pfVar19 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar20 != 0x10)" ( (binary_expression "lVar20 != 0x10" identifier != number_literal) )) ;) }) (else_clause "else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" else (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" { (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" identifier = (pointer_expression "*(int *)(lVar20 + 0x44)" * (cast_expression "(int *)(lVar20 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x44)" ( (binary_expression "lVar20 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);" do (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" { (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" { (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier = (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier [ (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" identifier + (pointer_expression "*(long *)(lVar20 + 0x48)" * (cast_expression "(long *)(lVar20 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) ))))) ])) ;) })) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ])))) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" identifier = (binary_expression "lVar22 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar17 != 0x10)" ( (binary_expression "lVar17 != 0x10" identifier != number_literal) )) ;) }))) (expression_statement "dVar34 = param_1 - (double)lVar25;" (assignment_expression "dVar34 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar31 = dVar26 - dVar34;" (assignment_expression "dVar31 = dVar26 - dVar34" identifier = (binary_expression "dVar26 - dVar34" identifier - identifier)) ;) (expression_statement "dVar32 = dVar34 * dVar28 * dVar31;" (assignment_expression "dVar32 = dVar34 * dVar28 * dVar31" identifier = (binary_expression "dVar34 * dVar28 * dVar31" (binary_expression "dVar34 * dVar28" identifier * identifier) * identifier)) ;) (expression_statement "dVar35 = dVar31 * dVar32;" (assignment_expression "dVar35 = dVar31 * dVar32" identifier = (binary_expression "dVar31 * dVar32" identifier * identifier)) ;) (expression_statement "dVar32 = dVar32 * dVar34;" (assignment_expression "dVar32 = dVar32 * dVar34" identifier = (binary_expression "dVar32 * dVar34" identifier * identifier)) ;) (expression_statement "dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);" (assignment_expression "dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35)" identifier = (binary_expression "(dVar31 - dVar35) + (dVar32 - dVar35)" (parenthesized_expression "(dVar31 - dVar35)" ( (binary_expression "dVar31 - dVar35" identifier - identifier) )) + (parenthesized_expression "(dVar32 - dVar35)" ( (binary_expression "dVar32 - dVar35" identifier - identifier) )))) ;) (expression_statement "dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);" (assignment_expression "dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35)" identifier = (binary_expression "(dVar34 - dVar32) - (dVar32 - dVar35)" (parenthesized_expression "(dVar34 - dVar32)" ( (binary_expression "dVar34 - dVar32" identifier - identifier) )) - (parenthesized_expression "(dVar32 - dVar35)" ( (binary_expression "dVar32 - dVar35" identifier - identifier) )))) ;) (expression_statement "dVar31 = param_2 - (double)local_168;" (assignment_expression "dVar31 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar36 = dVar26 - dVar31;" (assignment_expression "dVar36 = dVar26 - dVar31" identifier = (binary_expression "dVar26 - dVar31" identifier - identifier)) ;) (expression_statement "dVar38 = dVar31 * dVar28 * dVar36;" (assignment_expression "dVar38 = dVar31 * dVar28 * dVar36" identifier = (binary_expression "dVar31 * dVar28 * dVar36" (binary_expression "dVar31 * dVar28" identifier * identifier) * identifier)) ;) (expression_statement "dVar34 = dVar36 * dVar38;" (assignment_expression "dVar34 = dVar36 * dVar38" identifier = (binary_expression "dVar36 * dVar38" identifier * identifier)) ;) (expression_statement "dVar38 = dVar38 * dVar31;" (assignment_expression "dVar38 = dVar38 * dVar31" identifier = (binary_expression "dVar38 * dVar31" identifier * identifier)) ;) (expression_statement "dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);" (assignment_expression "dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34)" identifier = (binary_expression "(dVar36 - dVar34) + (dVar38 - dVar34)" (parenthesized_expression "(dVar36 - dVar34)" ( (binary_expression "dVar36 - dVar34" identifier - identifier) )) + (parenthesized_expression "(dVar38 - dVar34)" ( (binary_expression "dVar38 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);" (assignment_expression "dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34)" identifier = (binary_expression "(dVar31 - dVar38) - (dVar38 - dVar34)" (parenthesized_expression "(dVar31 - dVar38)" ( (binary_expression "dVar31 - dVar38" identifier - identifier) )) - (parenthesized_expression "(dVar38 - dVar34)" ( (binary_expression "dVar38 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar31 = DAT_003f9608;" (assignment_expression "dVar31 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" { (expression_statement "dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;" (assignment_expression "dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" identifier = (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36" (parenthesized_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb])" ( (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]" (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9]" (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8]" (binary_expression "dVar37 * local_148[10]" identifier * (subscript_expression "local_148[10]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_148[8]" identifier * (subscript_expression "local_148[8]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[9]" identifier * (subscript_expression "local_148[9]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[0xb]" identifier * (subscript_expression "local_148[0xb]" identifier [ number_literal ]))) )) * identifier) + (binary_expression "(dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34" (parenthesized_expression "(dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3])" ( (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]" (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2]" (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1]" (binary_expression "dVar35 * local_148[0]" identifier * (subscript_expression "local_148[0]" identifier [ number_literal ])) + (binary_expression "dVar33 * local_148[1]" identifier * (subscript_expression "local_148[1]" identifier [ number_literal ]))) + (binary_expression "dVar37 * local_148[2]" identifier * (subscript_expression "local_148[2]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[3]" identifier * (subscript_expression "local_148[3]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27" (parenthesized_expression "(dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7])" ( (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]" (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5]" (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4]" (binary_expression "dVar37 * local_148[6]" identifier * (subscript_expression "local_148[6]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_148[4]" identifier * (subscript_expression "local_148[4]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[5]" identifier * (subscript_expression "local_148[5]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[7]" identifier * (subscript_expression "local_148[7]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" (parenthesized_expression "(dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf])" ( (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]" (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]" (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc]" (binary_expression "dVar37 * local_148[0xe]" identifier * (subscript_expression "local_148[0xe]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_148[0xc]" identifier * (subscript_expression "local_148[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[0xd]" identifier * (subscript_expression "local_148[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[0xf]" identifier * (subscript_expression "local_148[0xf]" identifier [ number_literal ]))) )) * identifier))) ;) (expression_statement "dVar30 = DAT_003f9c68;" (assignment_expression "dVar30 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar31)" ( (binary_expression "0.0 <= dVar31" number_literal <= identifier) )) (compound_statement "{\n                dVar30 = DAT_003f9608;\n              }" { (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" if (parenthesized_expression "(dVar31 * dVar30 < DAT_003f9600)" ( (binary_expression "dVar31 * dVar30 < DAT_003f9600" (binary_expression "dVar31 * dVar30" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar31 = dVar30 / DAT_003f9600;\n              }" { (expression_statement "dVar31 = dVar30 / DAT_003f9600;" (assignment_expression "dVar31 = dVar30 / DAT_003f9600" identifier = (binary_expression "dVar30 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" else (compound_statement "{\n                dVar31 = DAT_003f9608 / dVar31;\n              }" { (expression_statement "dVar31 = DAT_003f9608 / dVar31;" (assignment_expression "dVar31 = DAT_003f9608 / dVar31" identifier = (binary_expression "DAT_003f9608 / dVar31" identifier / identifier)) ;) }))) })) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }" if (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" ( (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" * (cast_expression "(int *)(lVar18 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4)" ( (binary_expression "lVar18 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" identifier + (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" * (cast_expression "(long *)(lVar18 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 8)" ( (binary_expression "lVar18 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" ( (binary_expression "(dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31" (parenthesized_expression "(dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38)" ( (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3])" identifier * (parenthesized_expression "(dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3])" ( (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]" (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1]" (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0]" (binary_expression "dVar37 * local_c8[2]" identifier * (subscript_expression "local_c8[2]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_c8[0]" identifier * (subscript_expression "local_c8[0]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[1]" identifier * (subscript_expression "local_c8[1]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_c8[3]" identifier * (subscript_expression "local_c8[3]" identifier [ number_literal ]))) ))) + (binary_expression "(dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27" (parenthesized_expression "(dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7])" ( (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]" (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5]" (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4]" (binary_expression "dVar37 * local_c8[6]" identifier * (subscript_expression "local_c8[6]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_c8[4]" identifier * (subscript_expression "local_c8[4]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[5]" identifier * (subscript_expression "local_c8[5]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_c8[7]" identifier * (subscript_expression "local_c8[7]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" identifier * (parenthesized_expression "(dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" ( (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]" (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8]" (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10]" (binary_expression "dVar32 * local_c8[0xb]" identifier * (subscript_expression "local_c8[0xb]" identifier [ number_literal ])) + (binary_expression "dVar37 * local_c8[10]" identifier * (subscript_expression "local_c8[10]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[8]" identifier * (subscript_expression "local_c8[8]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[9]" identifier * (subscript_expression "local_c8[9]" identifier [ number_literal ]))) )))) + (binary_expression "(dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38" (parenthesized_expression "(dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])" ( (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd]" (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc]" (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe]" (binary_expression "dVar32 * local_c8[0xf]" identifier * (subscript_expression "local_c8[0xf]" identifier [ number_literal ])) + (binary_expression "dVar37 * local_c8[0xe]" identifier * (subscript_expression "local_c8[0xe]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[0xc]" identifier * (subscript_expression "local_c8[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[0xd]" identifier * (subscript_expression "local_c8[0xd]" identifier [ number_literal ]))) )) * identifier)) )) * identifier) )))) ;) })) })) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" identifier = (binary_expression "pfVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar24 < lVar13)" ( (binary_expression "lVar24 < lVar13" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8)" identifier (argument_list "(param_4,lVar25,local_168,1,1,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" { (if_statement "if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" if (parenthesized_expression "(*(long *)(param_3 + 0x340) < 1)" ( (binary_expression "*(long *)(param_3 + 0x340) < 1" (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" { (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));" do (compound_statement "{\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        }" { (expression_statement "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;" (assignment_expression "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (binary_expression "*(long *)(param_3 + 0x360) + lVar13 * 0x10" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + (binary_expression "lVar13 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (if_statement "if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" if (parenthesized_expression "(((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0))" ( (binary_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_3 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_3 + 0x360) + 4" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) ))) )) && (parenthesized_expression "(lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" ( (comma_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0" (assignment_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar24 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) , (binary_expression "*(int *)(lVar24 + 4) != 0" (pointer_expression "*(int *)(lVar24 + 4)" * (cast_expression "(int *)(lVar24 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 4)" ( (binary_expression "lVar24 + 4" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" { (expression_statement "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);" (assignment_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4)" (pointer_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" * (cast_expression "(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar24 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar24 + 8) * 4" identifier + (binary_expression "*(long *)(lVar24 + 8) * 4" (pointer_expression "*(long *)(lVar24 + 8)" * (cast_expression "(long *)(lVar24 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 8)" ( (binary_expression "lVar24 + 8" identifier + number_literal) )))) * number_literal)) )))) = (pointer_expression "*(undefined4 *)(lVar25 + lVar13 * 4)" * (cast_expression "(undefined4 *)(lVar25 + lVar13 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar13 * 4)" ( (binary_expression "lVar25 + lVar13 * 4" identifier + (binary_expression "lVar13 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 < *(long *)(param_3 + 0x340))" ( (binary_expression "lVar13 < *(long *)(param_3 + 0x340)" identifier < (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier (argument_list "(param_4,lVar25,local_168,2,2,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "fVar12 = DAT_0041abe0;" (assignment_expression "fVar12 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar2 = DAT_0041abdc;" (assignment_expression "fVar2 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar9 = DAT_0041abd8;" (assignment_expression "fVar9 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "uVar11 = DAT_003f9c70;" (assignment_expression "uVar11 = DAT_003f9c70" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar13 != 0)" ( (binary_expression "lVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar24 < 1)" ( (binary_expression "lVar24 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" do (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" { (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar20 * 0x10)" ( (binary_expression "lVar18 + lVar20 * 0x10" identifier + (binary_expression "lVar20 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" identifier = (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" * (cast_expression "(uint *)(lVar18 + 4 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4 + lVar17)" ( (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar17)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar17" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }" { (expression_statement "dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);" (assignment_expression "dVar34 = (double)*(float *)(lVar13 + lVar20 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar20 * 4)" * (cast_expression "(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar20 * 4)" ( (binary_expression "lVar13 + lVar20 * 4" identifier + (binary_expression "lVar20 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);" (assignment_expression "dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar20 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar20 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar20 + lVar24) * 4" identifier + (binary_expression "(lVar20 + lVar24) * 4" (parenthesized_expression "(lVar20 + lVar24)" ( (binary_expression "lVar20 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (expression_statement "lVar22 = lVar20 + lVar24 * 2;" (assignment_expression "lVar22 = lVar20 + lVar24 * 2" identifier = (binary_expression "lVar20 + lVar24 * 2" identifier + (binary_expression "lVar24 * 2" identifier * number_literal))) ;) (expression_statement "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);" (assignment_expression "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 * 4)" ( (binary_expression "lVar13 + lVar22 * 4" identifier + (binary_expression "lVar22 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);" (assignment_expression "dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar22 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar22 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar22 + lVar24) * 4" identifier + (binary_expression "(lVar22 + lVar24) * 4" (parenthesized_expression "(lVar22 + lVar24)" ( (binary_expression "lVar22 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (expression_statement "dVar28 = dVar26;" (assignment_expression "dVar28 = dVar26" identifier = identifier) ;) (if_statement "if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }" { (expression_statement "local_160 = dVar26;" (assignment_expression "local_160 = dVar26" identifier = identifier) ;) (expression_statement "dVar36 = DAT_003f9608;" (assignment_expression "dVar36 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar35 = dVar26;" (assignment_expression "dVar35 = dVar26" identifier = identifier) ;) }) (else_clause "else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" else (compound_statement "{\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" { (if_statement "if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" if (parenthesized_expression "(*(int *)(lVar18 + 0x44) == 0)" ( (binary_expression "*(int *)(lVar18 + 0x44) == 0" (pointer_expression "*(int *)(lVar18 + 0x44)" * (cast_expression "(int *)(lVar18 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x44)" ( (binary_expression "lVar18 + 0x44" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }" { (expression_statement "local_160 = dVar26;" (assignment_expression "local_160 = dVar26" identifier = identifier) ;) (expression_statement "dVar35 = DAT_003f9608;" (assignment_expression "dVar35 = DAT_003f9608" identifier = identifier) ;) (expression_statement "fVar8 = _DAT_003fa400;" (assignment_expression "fVar8 = _DAT_003fa400" identifier = identifier) ;) }) (else_clause "else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" else (compound_statement "{\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" { (expression_statement "lVar22 = *(long *)(lVar18 + 0x48) * 4;" (assignment_expression "lVar22 = *(long *)(lVar18 + 0x48) * 4" identifier = (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;" (assignment_expression "local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 4)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 4" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 4" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;" (assignment_expression "dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" * (cast_expression "(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (binary_expression "lVar13 + *(long *)(lVar18 + 0x48) * 4" identifier + (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;" (assignment_expression "dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 8)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 8)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 8" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 8" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);" (assignment_expression "fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc)" identifier = (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 0xc)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 0xc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 0xc)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 0xc" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 0xc" identifier * number_literal)) ))))) ;) }))) (expression_statement "dVar36 = (double)fVar8 * DAT_003f9c60;" (assignment_expression "dVar36 = (double)fVar8 * DAT_003f9c60" identifier = (binary_expression "(double)fVar8 * DAT_003f9c60" (cast_expression "(double)fVar8" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) }))) (expression_statement "dVar37 = param_1 - (double)lVar25;" (assignment_expression "dVar37 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar38 = param_2 - (double)local_168;" (assignment_expression "dVar38 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *(long *)(lVar24 + 8);" (assignment_expression "lVar5 = *(long *)(lVar24 + 8)" identifier = (pointer_expression "*(long *)(lVar24 + 8)" * (cast_expression "(long *)(lVar24 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 8)" ( (binary_expression "lVar24 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = *(long *)(lVar24 + 0x18);" (assignment_expression "lVar6 = *(long *)(lVar24 + 0x18)" identifier = (pointer_expression "*(long *)(lVar24 + 0x18)" * (cast_expression "(long *)(lVar24 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 0x18)" ( (binary_expression "lVar24 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar7 = *(long *)(lVar24 + 0x28);" (assignment_expression "lVar7 = *(long *)(lVar24 + 0x28)" identifier = (pointer_expression "*(long *)(lVar24 + 0x28)" * (cast_expression "(long *)(lVar24 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 0x28)" ( (binary_expression "lVar24 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar22 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "lVar24 = lVar13 + lVar22 * 0xc;" (assignment_expression "lVar24 = lVar13 + lVar22 * 0xc" identifier = (binary_expression "lVar13 + lVar22 * 0xc" identifier + (binary_expression "lVar22 * 0xc" identifier * number_literal))) ;) (expression_statement "lVar18 = lVar24 + lVar22 * -8;" (assignment_expression "lVar18 = lVar24 + lVar22 * -8" identifier = (binary_expression "lVar24 + lVar22 * -8" identifier + (binary_expression "lVar22 * -8" identifier * number_literal))) ;) (expression_statement "lVar22 = lVar18 + lVar22 * 4;" (assignment_expression "lVar22 = lVar18 + lVar22 * 4" identifier = (binary_expression "lVar18 + lVar22 * 4" identifier + (binary_expression "lVar22 * 4" identifier * number_literal))) ;) (if_statement "if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" if (parenthesized_expression "((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11))" ( (binary_expression "(double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" (cast_expression "(double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11)" ( (binary_expression "(ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11" (call_expression "(ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)))" ( (binary_expression "(double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" (cast_expression "(double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4))" ( (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar18 + lVar7 * 4)" * (cast_expression "(float *)(lVar18 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar7 * 4)" ( (binary_expression "lVar18 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar9 * *(float *)(lVar18 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar18 + lVar5 * 4)" * (cast_expression "(float *)(lVar18 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar5 * 4)" ( (binary_expression "lVar18 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar2 * *(float *)(lVar18 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar18 + lVar6 * 4)" * (cast_expression "(float *)(lVar18 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar6 * 4)" ( (binary_expression "lVar18 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) )))))) ))) - (cast_expression "(double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" ( (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar22 + lVar7 * 4)" * (cast_expression "(float *)(lVar22 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + lVar7 * 4)" ( (binary_expression "lVar22 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar9 * *(float *)(lVar22 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar22 + lVar5 * 4)" * (cast_expression "(float *)(lVar22 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + lVar5 * 4)" ( (binary_expression "lVar22 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar2 * *(float *)(lVar22 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar22 + lVar6 * 4)" * (cast_expression "(float *)(lVar22 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + lVar6 * 4)" ( (binary_expression "lVar22 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) )))))) )))) ))) & identifier) ))) <= (cast_expression "(double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" ( (binary_expression "(ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11" (call_expression "(ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)))" ( (binary_expression "(double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" (cast_expression "(double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4))" ( (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)" (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4)" (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar13 + lVar6 * 4)" * (cast_expression "(float *)(lVar13 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar6 * 4)" ( (binary_expression "lVar13 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar9 * *(float *)(lVar13 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar13 + lVar5 * 4)" * (cast_expression "(float *)(lVar13 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar5 * 4)" ( (binary_expression "lVar13 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar12 * *(float *)(lVar13 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar13 + lVar7 * 4)" * (cast_expression "(float *)(lVar13 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar7 * 4)" ( (binary_expression "lVar13 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) )))))) ))) - (cast_expression "(double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" ( (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar24 + lVar7 * 4)" * (cast_expression "(float *)(lVar24 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + lVar7 * 4)" ( (binary_expression "lVar24 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar2 * *(float *)(lVar24 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar24 + lVar6 * 4)" * (cast_expression "(float *)(lVar24 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + lVar6 * 4)" ( (binary_expression "lVar24 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar9 * *(float *)(lVar24 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar24 + lVar5 * 4)" * (cast_expression "(float *)(lVar24 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + lVar5 * 4)" ( (binary_expression "lVar24 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) )))) ))) & identifier) )))) )) (compound_statement "{\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }" { (expression_statement "dVar27 = DAT_003f9608 - dVar38;" (assignment_expression "dVar27 = DAT_003f9608 - dVar38" identifier = (binary_expression "DAT_003f9608 - dVar38" identifier - identifier)) ;) (if_statement "if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" if (parenthesized_expression "(dVar27 < dVar37)" ( (binary_expression "dVar27 < dVar37" identifier < identifier) )) (compound_statement "{\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }" { (expression_statement "dVar37 = DAT_003f9608 - dVar37;" (assignment_expression "dVar37 = DAT_003f9608 - dVar37" identifier = (binary_expression "DAT_003f9608 - dVar37" identifier - identifier)) ;) (expression_statement "dVar34 = (DAT_003f9608 - dVar37) - dVar27;" (assignment_expression "dVar34 = (DAT_003f9608 - dVar37) - dVar27" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar27" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;" (assignment_expression "dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27" identifier = (binary_expression "dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27" (binary_expression "dVar36 * dVar34 + dVar35 * dVar37" (binary_expression "dVar36 * dVar34" identifier * identifier) + (binary_expression "dVar35 * dVar37" identifier * identifier)) + (binary_expression "local_160 * dVar27" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                  dVar35 = dVar28 / DAT_003f9600;\n                }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" else (compound_statement "{\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" ( (binary_expression "(dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35" (parenthesized_expression "(dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37)" ( (binary_expression "dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37" (binary_expression "dVar34 * dVar31 + dVar32 * dVar27" (binary_expression "dVar34 * dVar31" identifier * identifier) + (binary_expression "dVar32 * dVar27" identifier * identifier)) + (binary_expression "dVar33 * dVar37" identifier * identifier)) )) * identifier) )))) ;) })) }) (else_clause "else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" else (compound_statement "{\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" { (expression_statement "dVar31 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar31 = (DAT_003f9608 - dVar37) - dVar38" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;" (assignment_expression "dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37" identifier = (binary_expression "dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37" (binary_expression "dVar28 * dVar31 + dVar35 * dVar38" (binary_expression "dVar28 * dVar31" identifier * identifier) + (binary_expression "dVar35 * dVar38" identifier * identifier)) + (binary_expression "local_160 * dVar37" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                  dVar35 = dVar28 / DAT_003f9600;\n                }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" else (compound_statement "{\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" ( (binary_expression "dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32)" identifier * (parenthesized_expression "(dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32)" ( (binary_expression "dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32" (binary_expression "dVar34 * dVar31 + dVar38 * dVar33" (binary_expression "dVar34 * dVar31" identifier * identifier) + (binary_expression "dVar38 * dVar33" identifier * identifier)) + (binary_expression "dVar37 * dVar32" identifier * identifier)) ))) )))) ;) })) }))) }) (else_clause "else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" else (if_statement "if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" if (parenthesized_expression "(dVar38 < dVar37)" ( (binary_expression "dVar38 < dVar37" identifier < identifier) )) (compound_statement "{\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }" { (expression_statement "dVar37 = DAT_003f9608 - dVar37;" (assignment_expression "dVar37 = DAT_003f9608 - dVar37" identifier = (binary_expression "DAT_003f9608 - dVar37" identifier - identifier)) ;) (expression_statement "dVar33 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar33 = (DAT_003f9608 - dVar37) - dVar38" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;" (assignment_expression "dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33" identifier = (binary_expression "dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33" (binary_expression "dVar36 * dVar38 + dVar28 * dVar37" (binary_expression "dVar36 * dVar38" identifier * identifier) + (binary_expression "dVar28 * dVar37" identifier * identifier)) + (binary_expression "local_160 * dVar33" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar35 = dVar28 / DAT_003f9600;\n              }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" else (compound_statement "{\n                dVar35 = DAT_003f9608 / dVar35;\n              }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" ( (binary_expression "(dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35" (parenthesized_expression "(dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31)" ( (binary_expression "dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31" (binary_expression "dVar33 * dVar32 + dVar37 * dVar34" (binary_expression "dVar33 * dVar32" identifier * identifier) + (binary_expression "dVar37 * dVar34" identifier * identifier)) + (binary_expression "dVar38 * dVar31" identifier * identifier)) )) * identifier) )))) ;) })) }) (else_clause "else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" else (compound_statement "{\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" { (expression_statement "dVar38 = DAT_003f9608 - dVar38;" (assignment_expression "dVar38 = DAT_003f9608 - dVar38" identifier = (binary_expression "DAT_003f9608 - dVar38" identifier - identifier)) ;) (expression_statement "dVar32 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar32 = (DAT_003f9608 - dVar37) - dVar38" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;" (assignment_expression "dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32" identifier = (binary_expression "dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32" (binary_expression "dVar36 * dVar37 + dVar28 * dVar38" (binary_expression "dVar36 * dVar37" identifier * identifier) + (binary_expression "dVar28 * dVar38" identifier * identifier)) + (binary_expression "dVar35 * dVar32" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar35 = dVar28 / DAT_003f9600;\n              }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" else (compound_statement "{\n                dVar35 = DAT_003f9608 / dVar35;\n              }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" ( (binary_expression "dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31)" identifier * (parenthesized_expression "(dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31)" ( (binary_expression "dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31" (binary_expression "dVar32 * dVar33 + dVar34 * dVar38" (binary_expression "dVar32 * dVar33" identifier * identifier) + (binary_expression "dVar34 * dVar38" identifier * identifier)) + (binary_expression "dVar37 * dVar31" identifier * identifier)) ))) )))) ;) })) }))))) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar20 < lVar24)" ( (binary_expression "lVar20 < lVar24" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (if_statement "if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" if (parenthesized_expression "(param_1 < DAT_004294e8)" ( (binary_expression "param_1 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n      local_178 = DAT_004294e8;\n    }" { (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" else (if_statement "if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" if (parenthesized_expression "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) )) (compound_statement "{\n      local_178 = DAT_004294f0;\n    }" { (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "dVar26 = floor(local_178 + DAT_003f9c28);" (assignment_expression "dVar26 = floor(local_178 + DAT_003f9c28)" identifier = (call_expression "floor(local_178 + DAT_003f9c28)" identifier (argument_list "(local_178 + DAT_003f9c28)" ( (binary_expression "local_178 + DAT_003f9c28" identifier + identifier) )))) ;) (if_statement "if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" if (parenthesized_expression "(param_2 < DAT_004294e8)" ( (binary_expression "param_2 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n      local_170 = DAT_004294e8;\n    }" { (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" else (if_statement "if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" if (parenthesized_expression "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) )) (compound_statement "{\n      local_170 = DAT_004294f0;\n    }" { (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "dVar28 = floor(local_170 + DAT_003f9c28);" (assignment_expression "dVar28 = floor(local_170 + DAT_003f9c28)" identifier = (call_expression "floor(local_170 + DAT_003f9c28)" identifier (argument_list "(local_170 + DAT_003f9c28)" ( (binary_expression "local_170 + DAT_003f9c28" identifier + identifier) )))) ;) (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" identifier (argument_list "(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" ( identifier , (cast_expression "(long)dVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) , (cast_expression "(long)dVar28" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" { (if_statement "if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" if (parenthesized_expression "(*(long *)(param_3 + 0x340) < 1)" ( (binary_expression "*(long *)(param_3 + 0x340) < 1" (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" { (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));" do (compound_statement "{\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        }" { (expression_statement "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;" (assignment_expression "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (binary_expression "*(long *)(param_3 + 0x360) + lVar13 * 0x10" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + (binary_expression "lVar13 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (if_statement "if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" if (parenthesized_expression "(((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0))" ( (binary_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_3 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_3 + 0x360) + 4" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) ))) )) && (parenthesized_expression "(lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" ( (comma_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0" (assignment_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar24 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) , (binary_expression "*(int *)(lVar24 + 4) != 0" (pointer_expression "*(int *)(lVar24 + 4)" * (cast_expression "(int *)(lVar24 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 4)" ( (binary_expression "lVar24 + 4" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" { (expression_statement "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);" (assignment_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4)" (pointer_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" * (cast_expression "(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar24 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar24 + 8) * 4" identifier + (binary_expression "*(long *)(lVar24 + 8) * 4" (pointer_expression "*(long *)(lVar24 + 8)" * (cast_expression "(long *)(lVar24 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 8)" ( (binary_expression "lVar24 + 8" identifier + number_literal) )))) * number_literal)) )))) = (pointer_expression "*(undefined4 *)(lVar25 + lVar13 * 4)" * (cast_expression "(undefined4 *)(lVar25 + lVar13 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar13 * 4)" ( (binary_expression "lVar25 + lVar13 * 4" identifier + (binary_expression "lVar13 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 < *(long *)(param_3 + 0x340))" ( (binary_expression "lVar13 < *(long *)(param_3 + 0x340)" identifier < (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" case number_literal : (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier = (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier (argument_list "(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( identifier , (binary_expression "lVar25 + -1" identifier + number_literal) , (binary_expression "local_168 + -1" identifier + number_literal) , number_literal , number_literal , identifier ))))) ;) (expression_statement "dVar28 = DAT_0041d760;" (assignment_expression "dVar28 = DAT_0041d760" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(pfVar15 != (float *)0x0)" ( (binary_expression "pfVar15 != (float *)0x0" identifier != (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar13 < 1)" ( (binary_expression "lVar13 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" identifier = identifier) ;) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" do (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" { (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;" (assignment_expression "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + lVar24 * 0x10)" ( (binary_expression "lVar20 + lVar24 * 0x10" identifier + (binary_expression "lVar24 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar20 + 4 + lVar18);" (assignment_expression "uVar23 = *(uint *)(lVar20 + 4 + lVar18)" identifier = (pointer_expression "*(uint *)(lVar20 + 4 + lVar18)" * (cast_expression "(uint *)(lVar20 + 4 + lVar18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 4 + lVar18)" ( (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }" { (expression_statement "uVar23 = uVar23 & 4;" (assignment_expression "uVar23 = uVar23 & 4" identifier = (binary_expression "uVar23 & 4" identifier & number_literal)) ;) (if_statement "if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" identifier = identifier) ;) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);" do (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" { (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" identifier = (binary_expression "pfVar19 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar20 != 0x10)" ( (binary_expression "lVar20 != 0x10" identifier != number_literal) )) ;) }) (else_clause "else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" else (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" { (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" identifier = (pointer_expression "*(int *)(lVar20 + 0x44)" * (cast_expression "(int *)(lVar20 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x44)" ( (binary_expression "lVar20 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);" do (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" { (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" { (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier = (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier [ (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" identifier + (pointer_expression "*(long *)(lVar20 + 0x48)" * (cast_expression "(long *)(lVar20 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) ))))) ])) ;) })) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ])))) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" identifier = (binary_expression "lVar22 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar17 != 0x10)" ( (binary_expression "lVar17 != 0x10" identifier != number_literal) )) ;) }))) (expression_statement "dVar32 = param_1 - (double)lVar25;" (assignment_expression "dVar32 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar31 = dVar26 - dVar32;" (assignment_expression "dVar31 = dVar26 - dVar32" identifier = (binary_expression "dVar26 - dVar32" identifier - identifier)) ;) (expression_statement "dVar33 = dVar32 * dVar28 * dVar32 * dVar32;" (assignment_expression "dVar33 = dVar32 * dVar28 * dVar32 * dVar32" identifier = (binary_expression "dVar32 * dVar28 * dVar32 * dVar32" (binary_expression "dVar32 * dVar28 * dVar32" (binary_expression "dVar32 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar34 = dVar31 * dVar28 * dVar31 * dVar31;" (assignment_expression "dVar34 = dVar31 * dVar28 * dVar31 * dVar31" identifier = (binary_expression "dVar31 * dVar28 * dVar31 * dVar31" (binary_expression "dVar31 * dVar28 * dVar31" (binary_expression "dVar31 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);" (assignment_expression "dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34)" identifier = (binary_expression "(dVar31 - dVar34) + (dVar33 - dVar34)" (parenthesized_expression "(dVar31 - dVar34)" ( (binary_expression "dVar31 - dVar34" identifier - identifier) )) + (parenthesized_expression "(dVar33 - dVar34)" ( (binary_expression "dVar33 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);" (assignment_expression "dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34)" identifier = (binary_expression "(dVar32 - dVar33) - (dVar33 - dVar34)" (parenthesized_expression "(dVar32 - dVar33)" ( (binary_expression "dVar32 - dVar33" identifier - identifier) )) - (parenthesized_expression "(dVar33 - dVar34)" ( (binary_expression "dVar33 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar32 = param_2 - (double)local_168;" (assignment_expression "dVar32 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar37 = dVar26 - dVar32;" (assignment_expression "dVar37 = dVar26 - dVar32" identifier = (binary_expression "dVar26 - dVar32" identifier - identifier)) ;) (expression_statement "dVar38 = dVar32 * dVar28 * dVar32 * dVar32;" (assignment_expression "dVar38 = dVar32 * dVar28 * dVar32 * dVar32" identifier = (binary_expression "dVar32 * dVar28 * dVar32 * dVar32" (binary_expression "dVar32 * dVar28 * dVar32" (binary_expression "dVar32 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar31 = dVar37 * dVar28 * dVar37 * dVar37;" (assignment_expression "dVar31 = dVar37 * dVar28 * dVar37 * dVar37" identifier = (binary_expression "dVar37 * dVar28 * dVar37 * dVar37" (binary_expression "dVar37 * dVar28 * dVar37" (binary_expression "dVar37 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);" (assignment_expression "dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31)" identifier = (binary_expression "(dVar37 - dVar31) + (dVar38 - dVar31)" (parenthesized_expression "(dVar37 - dVar31)" ( (binary_expression "dVar37 - dVar31" identifier - identifier) )) + (parenthesized_expression "(dVar38 - dVar31)" ( (binary_expression "dVar38 - dVar31" identifier - identifier) )))) ;) (expression_statement "dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);" (assignment_expression "dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31)" identifier = (binary_expression "(dVar32 - dVar38) - (dVar38 - dVar31)" (parenthesized_expression "(dVar32 - dVar38)" ( (binary_expression "dVar32 - dVar38" identifier - identifier) )) - (parenthesized_expression "(dVar38 - dVar31)" ( (binary_expression "dVar38 - dVar31" identifier - identifier) )))) ;) (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }" { (expression_statement "dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;" (assignment_expression "dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" identifier = (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27" (parenthesized_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7])" ( (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]" (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5]" (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4]" (binary_expression "dVar36 * local_148[6]" identifier * (subscript_expression "local_148[6]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[4]" identifier * (subscript_expression "local_148[4]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[5]" identifier * (subscript_expression "local_148[5]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[7]" identifier * (subscript_expression "local_148[7]" identifier [ number_literal ]))) )) * identifier) + (binary_expression "(dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31" (parenthesized_expression "(dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2])" ( (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]" (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1]" (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0]" (binary_expression "dVar33 * local_148[3]" identifier * (subscript_expression "local_148[3]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[0]" identifier * (subscript_expression "local_148[0]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[1]" identifier * (subscript_expression "local_148[1]" identifier [ number_literal ]))) + (binary_expression "dVar36 * local_148[2]" identifier * (subscript_expression "local_148[2]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37" (parenthesized_expression "(dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb])" ( (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]" (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9]" (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8]" (binary_expression "dVar36 * local_148[10]" identifier * (subscript_expression "local_148[10]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[8]" identifier * (subscript_expression "local_148[8]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[9]" identifier * (subscript_expression "local_148[9]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[0xb]" identifier * (subscript_expression "local_148[0xb]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" (parenthesized_expression "(dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf])" ( (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]" (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]" (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc]" (binary_expression "dVar36 * local_148[0xe]" identifier * (subscript_expression "local_148[0xe]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[0xc]" identifier * (subscript_expression "local_148[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[0xd]" identifier * (subscript_expression "local_148[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[0xf]" identifier * (subscript_expression "local_148[0xf]" identifier [ number_literal ]))) )) * identifier))) ;) (expression_statement "dVar30 = DAT_003f9c68;" (assignment_expression "dVar30 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar32)" ( (binary_expression "0.0 <= dVar32" number_literal <= identifier) )) (compound_statement "{\n                dVar30 = DAT_003f9608;\n              }" { (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }" if (parenthesized_expression "(dVar32 * dVar30 < DAT_003f9600)" ( (binary_expression "dVar32 * dVar30 < DAT_003f9600" (binary_expression "dVar32 * dVar30" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar32 = dVar30 / DAT_003f9600;\n              }" { (expression_statement "dVar32 = dVar30 / DAT_003f9600;" (assignment_expression "dVar32 = dVar30 / DAT_003f9600" identifier = (binary_expression "dVar30 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }" else (compound_statement "{\n                dVar32 = DAT_003f9608 / dVar32;\n              }" { (expression_statement "dVar32 = DAT_003f9608 / dVar32;" (assignment_expression "dVar32 = DAT_003f9608 / dVar32" identifier = (binary_expression "DAT_003f9608 / dVar32" identifier / identifier)) ;) }))) })) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }" if (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" ( (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" * (cast_expression "(int *)(lVar18 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4)" ( (binary_expression "lVar18 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" identifier + (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" * (cast_expression "(long *)(lVar18 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 8)" ( (binary_expression "lVar18 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" ( (binary_expression "(dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32" (parenthesized_expression "(dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38)" ( (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7])" identifier * (parenthesized_expression "(dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7])" ( (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]" (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5]" (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4]" (binary_expression "dVar36 * local_c8[6]" identifier * (subscript_expression "local_c8[6]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_c8[4]" identifier * (subscript_expression "local_c8[4]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[5]" identifier * (subscript_expression "local_c8[5]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[7]" identifier * (subscript_expression "local_c8[7]" identifier [ number_literal ]))) ))) + (binary_expression "dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" identifier * (parenthesized_expression "(dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" ( (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]" (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1]" (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0]" (binary_expression "dVar36 * local_c8[2]" identifier * (subscript_expression "local_c8[2]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_c8[0]" identifier * (subscript_expression "local_c8[0]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[1]" identifier * (subscript_expression "local_c8[1]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[3]" identifier * (subscript_expression "local_c8[3]" identifier [ number_literal ]))) )))) + (binary_expression "dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" identifier * (parenthesized_expression "(dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" ( (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]" (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8]" (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10]" (binary_expression "dVar33 * local_c8[0xb]" identifier * (subscript_expression "local_c8[0xb]" identifier [ number_literal ])) + (binary_expression "dVar36 * local_c8[10]" identifier * (subscript_expression "local_c8[10]" identifier [ number_literal ]))) + (binary_expression "dVar34 * local_c8[8]" identifier * (subscript_expression "local_c8[8]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[9]" identifier * (subscript_expression "local_c8[9]" identifier [ number_literal ]))) )))) + (binary_expression "(dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38" (parenthesized_expression "(dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf])" ( (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]" (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]" (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc]" (binary_expression "dVar36 * local_c8[0xe]" identifier * (subscript_expression "local_c8[0xe]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_c8[0xc]" identifier * (subscript_expression "local_c8[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[0xd]" identifier * (subscript_expression "local_c8[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[0xf]" identifier * (subscript_expression "local_c8[0xf]" identifier [ number_literal ]))) )) * identifier)) )) * identifier) )))) ;) })) })) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" identifier = (binary_expression "pfVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar24 < lVar13)" ( (binary_expression "lVar24 < lVar13" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) }))) })) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar14;\n  }" { (return_statement "return uVar14;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n\nMagickBooleanType\nInterpolatePixelChannels\n          (Image *source,CacheView_ *source_view,Image *destination,PixelInterpolateMethod method,\n          double x,double y,Quantum *pixel,ExceptionInfo *exception)\n\n{\n  double *pdVar1;\n  float fVar2;\n  PixelChannel PVar3;\n  PixelTrait PVar4;\n  long lVar5;\n  PixelChannelMap *pPVar6;\n  PixelChannelMap *pPVar7;\n  long lVar8;\n  float fVar9;\n  float fVar10;\n  ulong uVar11;\n  float fVar12;\n  MagickBooleanType MVar13;\n  size_t sVar14;\n  Quantum *pQVar15;\n  long lVar16;\n  double *pdVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  Quantum *pQVar21;\n  PixelTrait PVar22;\n  ssize_t x_00;\n  long in_FS_OFFSET;\n  double dVar23;\n  double dVar24;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double local_178;\n  double local_170;\n  ssize_t local_168;\n  double local_160;\n  double alpha [16];\n  double pixels [16];\n  \n  lVar5 = *(long *)(in_FS_OFFSET + 0x28);\n  if (source == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (source->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (source_view == (CacheView_ *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar23 = DAT_004294e8;\n  if (DAT_004294e8 <= x) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x);\n  }\n  dVar23 = floor(dVar23);\n  x_00 = (ssize_t)dVar23;\n  dVar23 = DAT_004294e8;\n  if (DAT_004294e8 <= y) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y);\n  }\n  dVar23 = floor(dVar23);\n  local_168 = (ssize_t)dVar23;\n  if (method == UndefinedInterpolatePixel) {\n    method = source->interpolate;\n  }\n  local_178 = x;\n  local_170 = y;\n  switch(method) {\n  default:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case AverageInterpolatePixel:\n  case Average9InterpolatePixel:\n  case Average16InterpolatePixel:\n    if (method == Average9InterpolatePixel) {\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }\n    else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);\n    dVar29 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case BlendInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar29 = _DAT_004294f8;\n    fVar10 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar23 = DAT_003f9600;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case CatromInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_00406598;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case IntegerInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case MeshInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar10 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case NearestInterpolatePixel:\n    if (x < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }\n    dVar23 = floor(local_178 + DAT_003f9c28);\n    if (y < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case SplineInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_0041d760;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n  }\n  if (lVar5 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar13;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment comment comment comment comment comment (function_definition "MagickBooleanType\nInterpolatePixelChannels\n          (Image *source,CacheView_ *source_view,Image *destination,PixelInterpolateMethod method,\n          double x,double y,Quantum *pixel,ExceptionInfo *exception)\n\n{\n  double *pdVar1;\n  float fVar2;\n  PixelChannel PVar3;\n  PixelTrait PVar4;\n  long lVar5;\n  PixelChannelMap *pPVar6;\n  PixelChannelMap *pPVar7;\n  long lVar8;\n  float fVar9;\n  float fVar10;\n  ulong uVar11;\n  float fVar12;\n  MagickBooleanType MVar13;\n  size_t sVar14;\n  Quantum *pQVar15;\n  long lVar16;\n  double *pdVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  Quantum *pQVar21;\n  PixelTrait PVar22;\n  ssize_t x_00;\n  long in_FS_OFFSET;\n  double dVar23;\n  double dVar24;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double local_178;\n  double local_170;\n  ssize_t local_168;\n  double local_160;\n  double alpha [16];\n  double pixels [16];\n  \n  lVar5 = *(long *)(in_FS_OFFSET + 0x28);\n  if (source == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (source->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (source_view == (CacheView_ *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar23 = DAT_004294e8;\n  if (DAT_004294e8 <= x) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x);\n  }\n  dVar23 = floor(dVar23);\n  x_00 = (ssize_t)dVar23;\n  dVar23 = DAT_004294e8;\n  if (DAT_004294e8 <= y) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y);\n  }\n  dVar23 = floor(dVar23);\n  local_168 = (ssize_t)dVar23;\n  if (method == UndefinedInterpolatePixel) {\n    method = source->interpolate;\n  }\n  local_178 = x;\n  local_170 = y;\n  switch(method) {\n  default:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case AverageInterpolatePixel:\n  case Average9InterpolatePixel:\n  case Average16InterpolatePixel:\n    if (method == Average9InterpolatePixel) {\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }\n    else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);\n    dVar29 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case BlendInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar29 = _DAT_004294f8;\n    fVar10 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar23 = DAT_003f9600;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case CatromInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_00406598;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case IntegerInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case MeshInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar10 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case NearestInterpolatePixel:\n    if (x < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }\n    dVar23 = floor(local_178 + DAT_003f9c28);\n    if (y < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case SplineInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_0041d760;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n  }\n  if (lVar5 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar13;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "InterpolatePixelChannels\n          (Image *source,CacheView_ *source_view,Image *destination,PixelInterpolateMethod method,\n          double x,double y,Quantum *pixel,ExceptionInfo *exception)" identifier (parameter_list "(Image *source,CacheView_ *source_view,Image *destination,PixelInterpolateMethod method,\n          double x,double y,Quantum *pixel,ExceptionInfo *exception)" ( (parameter_declaration "Image *source" type_identifier (pointer_declarator "*source" * identifier)) , (parameter_declaration "CacheView_ *source_view" type_identifier (pointer_declarator "*source_view" * identifier)) , (parameter_declaration "Image *destination" type_identifier (pointer_declarator "*destination" * identifier)) , (parameter_declaration "PixelInterpolateMethod method" type_identifier identifier) , (parameter_declaration "double x" primitive_type identifier) , (parameter_declaration "double y" primitive_type identifier) , (parameter_declaration "Quantum *pixel" type_identifier (pointer_declarator "*pixel" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  double *pdVar1;\n  float fVar2;\n  PixelChannel PVar3;\n  PixelTrait PVar4;\n  long lVar5;\n  PixelChannelMap *pPVar6;\n  PixelChannelMap *pPVar7;\n  long lVar8;\n  float fVar9;\n  float fVar10;\n  ulong uVar11;\n  float fVar12;\n  MagickBooleanType MVar13;\n  size_t sVar14;\n  Quantum *pQVar15;\n  long lVar16;\n  double *pdVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  Quantum *pQVar21;\n  PixelTrait PVar22;\n  ssize_t x_00;\n  long in_FS_OFFSET;\n  double dVar23;\n  double dVar24;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double local_178;\n  double local_170;\n  ssize_t local_168;\n  double local_160;\n  double alpha [16];\n  double pixels [16];\n  \n  lVar5 = *(long *)(in_FS_OFFSET + 0x28);\n  if (source == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (source->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (source_view == (CacheView_ *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar23 = DAT_004294e8;\n  if (DAT_004294e8 <= x) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x);\n  }\n  dVar23 = floor(dVar23);\n  x_00 = (ssize_t)dVar23;\n  dVar23 = DAT_004294e8;\n  if (DAT_004294e8 <= y) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y);\n  }\n  dVar23 = floor(dVar23);\n  local_168 = (ssize_t)dVar23;\n  if (method == UndefinedInterpolatePixel) {\n    method = source->interpolate;\n  }\n  local_178 = x;\n  local_170 = y;\n  switch(method) {\n  default:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case AverageInterpolatePixel:\n  case Average9InterpolatePixel:\n  case Average16InterpolatePixel:\n    if (method == Average9InterpolatePixel) {\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }\n    else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);\n    dVar29 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case BlendInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar29 = _DAT_004294f8;\n    fVar10 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar23 = DAT_003f9600;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case CatromInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_00406598;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case IntegerInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case MeshInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar10 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case NearestInterpolatePixel:\n    if (x < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }\n    dVar23 = floor(local_178 + DAT_003f9c28);\n    if (y < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case SplineInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_0041d760;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n  }\n  if (lVar5 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar13;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "double *pdVar1;" primitive_type (pointer_declarator "*pdVar1" * identifier) ;) (declaration "float fVar2;" primitive_type identifier ;) (declaration "PixelChannel PVar3;" type_identifier identifier ;) (declaration "PixelTrait PVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "PixelChannelMap *pPVar6;" type_identifier (pointer_declarator "*pPVar6" * identifier) ;) (declaration "PixelChannelMap *pPVar7;" type_identifier (pointer_declarator "*pPVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "float fVar12;" primitive_type identifier ;) (declaration "MagickBooleanType MVar13;" type_identifier identifier ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "Quantum *pQVar15;" type_identifier (pointer_declarator "*pQVar15" * identifier) ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "double *pdVar17;" primitive_type (pointer_declarator "*pdVar17" * identifier) ;) (declaration "long lVar18;" (sized_type_specifier "long" long) identifier ;) (declaration "float *pfVar19;" primitive_type (pointer_declarator "*pfVar19" * identifier) ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "Quantum *pQVar21;" type_identifier (pointer_declarator "*pQVar21" * identifier) ;) (declaration "PixelTrait PVar22;" type_identifier identifier ;) (declaration "ssize_t x_00;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar23;" primitive_type identifier ;) (declaration "double dVar24;" primitive_type identifier ;) (declaration "double dVar25;" primitive_type identifier ;) (declaration "double dVar26;" primitive_type identifier ;) (declaration "double dVar27;" primitive_type identifier ;) (declaration "double dVar28;" primitive_type identifier ;) (declaration "double dVar29;" primitive_type identifier ;) (declaration "double dVar30;" primitive_type identifier ;) (declaration "double dVar31;" primitive_type identifier ;) (declaration "double dVar32;" primitive_type identifier ;) (declaration "double dVar33;" primitive_type identifier ;) (declaration "double dVar34;" primitive_type identifier ;) (declaration "double local_178;" primitive_type identifier ;) (declaration "double local_170;" primitive_type identifier ;) (declaration "ssize_t local_168;" primitive_type identifier ;) (declaration "double local_160;" primitive_type identifier ;) (declaration "double alpha [16];" primitive_type (array_declarator "alpha [16]" identifier [ number_literal ]) ;) (declaration "double pixels [16];" primitive_type (array_declarator "pixels [16]" identifier [ number_literal ]) ;) (expression_statement "lVar5 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar5 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (source == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }" if (parenthesized_expression "(source == (Image *)0x0)" ( (binary_expression "source == (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("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }" { comment (expression_statement "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;" (call_expression "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" identifier (argument_list "("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" ( (string_literal ""source != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (if_statement "if (source->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" if (parenthesized_expression "(source->signature != 0xabacadab)" ( (binary_expression "source->signature != 0xabacadab" (field_expression "source->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" { comment (expression_statement "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" identifier (argument_list "("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" ( (string_literal ""source->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (if_statement "if (source_view == (CacheView_ *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" if (parenthesized_expression "(source_view == (CacheView_ *)0x0)" ( (binary_expression "source_view == (CacheView_ *)0x0" identifier == (cast_expression "(CacheView_ *)0x0" ( (type_descriptor "CacheView_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" { comment (expression_statement "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" identifier (argument_list "("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" ( (string_literal ""source_view != (CacheView *) NULL"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (expression_statement "dVar23 = DAT_004294e8;" (assignment_expression "dVar23 = DAT_004294e8" identifier = identifier) ;) (if_statement "if (DAT_004294e8 <= x) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x);\n  }" if (parenthesized_expression "(DAT_004294e8 <= x)" ( (binary_expression "DAT_004294e8 <= x" identifier <= identifier) )) (compound_statement "{\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x);\n  }" { (expression_statement "dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x);" (assignment_expression "dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x)" identifier = (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x)" ( (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x) |\n                     ~-(ulong)(DAT_004294f0 < x) & (ulong)x" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < x)" (cast_expression "(ulong)DAT_004294f0" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(DAT_004294f0 < x)" - (call_expression "(ulong)(DAT_004294f0 < x)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < x)" ( (binary_expression "DAT_004294f0 < x" identifier < identifier) ))))) | (binary_expression "~-(ulong)(DAT_004294f0 < x) & (ulong)x" (unary_expression "~-(ulong)(DAT_004294f0 < x)" ~ (unary_expression "-(ulong)(DAT_004294f0 < x)" - (call_expression "(ulong)(DAT_004294f0 < x)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < x)" ( (binary_expression "DAT_004294f0 < x" identifier < identifier) ))))) & (cast_expression "(ulong)x" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "dVar23 = floor(dVar23);" (assignment_expression "dVar23 = floor(dVar23)" identifier = (call_expression "floor(dVar23)" identifier (argument_list "(dVar23)" ( identifier )))) ;) (expression_statement "x_00 = (ssize_t)dVar23;" (assignment_expression "x_00 = (ssize_t)dVar23" identifier = (cast_expression "(ssize_t)dVar23" ( (type_descriptor "ssize_t" primitive_type) ) identifier)) ;) (expression_statement "dVar23 = DAT_004294e8;" (assignment_expression "dVar23 = DAT_004294e8" identifier = identifier) ;) (if_statement "if (DAT_004294e8 <= y) {\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y);\n  }" if (parenthesized_expression "(DAT_004294e8 <= y)" ( (binary_expression "DAT_004294e8 <= y" identifier <= identifier) )) (compound_statement "{\n    dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y);\n  }" { (expression_statement "dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y);" (assignment_expression "dVar23 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y)" identifier = (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y)" ( (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y) |\n                     ~-(ulong)(DAT_004294f0 < y) & (ulong)y" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < y)" (cast_expression "(ulong)DAT_004294f0" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(DAT_004294f0 < y)" - (call_expression "(ulong)(DAT_004294f0 < y)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < y)" ( (binary_expression "DAT_004294f0 < y" identifier < identifier) ))))) | (binary_expression "~-(ulong)(DAT_004294f0 < y) & (ulong)y" (unary_expression "~-(ulong)(DAT_004294f0 < y)" ~ (unary_expression "-(ulong)(DAT_004294f0 < y)" - (call_expression "(ulong)(DAT_004294f0 < y)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < y)" ( (binary_expression "DAT_004294f0 < y" identifier < identifier) ))))) & (cast_expression "(ulong)y" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "dVar23 = floor(dVar23);" (assignment_expression "dVar23 = floor(dVar23)" identifier = (call_expression "floor(dVar23)" identifier (argument_list "(dVar23)" ( identifier )))) ;) (expression_statement "local_168 = (ssize_t)dVar23;" (assignment_expression "local_168 = (ssize_t)dVar23" identifier = (cast_expression "(ssize_t)dVar23" ( (type_descriptor "ssize_t" primitive_type) ) identifier)) ;) (if_statement "if (method == UndefinedInterpolatePixel) {\n    method = source->interpolate;\n  }" if (parenthesized_expression "(method == UndefinedInterpolatePixel)" ( (binary_expression "method == UndefinedInterpolatePixel" identifier == identifier) )) (compound_statement "{\n    method = source->interpolate;\n  }" { (expression_statement "method = source->interpolate;" (assignment_expression "method = source->interpolate" identifier = (field_expression "source->interpolate" identifier -> field_identifier)) ;) })) (expression_statement "local_178 = x;" (assignment_expression "local_178 = x" identifier = identifier) ;) (expression_statement "local_170 = y;" (assignment_expression "local_170 = y" identifier = identifier) ;) (switch_statement "switch(method) {\n  default:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case AverageInterpolatePixel:\n  case Average9InterpolatePixel:\n  case Average16InterpolatePixel:\n    if (method == Average9InterpolatePixel) {\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }\n    else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);\n    dVar29 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case BlendInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar29 = _DAT_004294f8;\n    fVar10 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar23 = DAT_003f9600;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case CatromInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_00406598;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case IntegerInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case MeshInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar10 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case NearestInterpolatePixel:\n    if (x < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }\n    dVar23 = floor(local_178 + DAT_003f9c28);\n    if (y < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case SplineInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_0041d760;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n  }" switch (parenthesized_expression "(method)" ( identifier )) (compound_statement "{\n  default:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case AverageInterpolatePixel:\n  case Average9InterpolatePixel:\n  case Average16InterpolatePixel:\n    if (method == Average9InterpolatePixel) {\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }\n    else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);\n    dVar29 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case BlendInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar29 = _DAT_004294f8;\n    fVar10 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar23 = DAT_003f9600;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case CatromInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_00406598;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case IntegerInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case MeshInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar10 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case NearestInterpolatePixel:\n    if (x < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }\n    dVar23 = floor(local_178 + DAT_003f9c28);\n    if (y < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;\n  case SplineInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_0041d760;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n  }" { (case_statement "default:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;" default : (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception)" identifier (argument_list "(source_view,x_00,local_168,2,2,exception)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "dVar23 = DAT_003f9608;" (assignment_expression "dVar23 = DAT_003f9608" identifier = identifier) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" { (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (if_statement "if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)sVar14 < 1)" ( (binary_expression "(long)sVar14 < 1" (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);" do (compound_statement "{\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          pPVar7 = destination->channel_map;\n          PVar22 = pPVar7[PVar3].traits;\n          if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        }" { (expression_statement "pPVar6 = source->channel_map;" (assignment_expression "pPVar6 = source->channel_map" identifier = (field_expression "source->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar3 = pPVar6[lVar20].channel;" (assignment_expression "PVar3 = pPVar6[lVar20].channel" identifier = (field_expression "pPVar6[lVar20].channel" (subscript_expression "pPVar6[lVar20]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "pPVar7 = destination->channel_map;" (assignment_expression "pPVar7 = destination->channel_map" identifier = (field_expression "destination->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar22 = pPVar7[PVar3].traits;" (assignment_expression "PVar22 = pPVar7[PVar3].traits" identifier = (field_expression "pPVar7[PVar3].traits" (subscript_expression "pPVar7[PVar3]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if ((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)) {\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }" if (parenthesized_expression "((pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait))" ( (binary_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait) && (PVar22 != UndefinedPixelTrait)" (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) )) && (parenthesized_expression "(PVar22 != UndefinedPixelTrait)" ( (binary_expression "PVar22 != UndefinedPixelTrait" identifier != identifier) ))) )) (compound_statement "{\n            dVar28 = x - (double)x_00;\n            dVar31 = y - (double)local_168;\n            dVar29 = dVar23 - dVar28;\n            dVar32 = dVar23 - dVar31;\n            lVar16 = lVar20 + sVar14 * 2;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }\n          }" { (expression_statement "dVar28 = x - (double)x_00;" (assignment_expression "dVar28 = x - (double)x_00" identifier = (binary_expression "x - (double)x_00" identifier - (cast_expression "(double)x_00" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar31 = y - (double)local_168;" (assignment_expression "dVar31 = y - (double)local_168" identifier = (binary_expression "y - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar29 = dVar23 - dVar28;" (assignment_expression "dVar29 = dVar23 - dVar28" identifier = (binary_expression "dVar23 - dVar28" identifier - identifier)) ;) (expression_statement "dVar32 = dVar23 - dVar31;" (assignment_expression "dVar32 = dVar23 - dVar31" identifier = (binary_expression "dVar23 - dVar31" identifier - identifier)) ;) (expression_statement "lVar16 = lVar20 + sVar14 * 2;" (assignment_expression "lVar16 = lVar20 + sVar14 * 2" identifier = (binary_expression "lVar20 + sVar14 * 2" identifier + (binary_expression "sVar14 * 2" identifier * number_literal))) ;) (if_statement "if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }" if (parenthesized_expression "((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar6[PVar3].traits & BlendPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits & BlendPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) & identifier) )) == identifier) )) (compound_statement "{\n              dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;\n              dVar25 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }\n              if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }\n            }" { (expression_statement "dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31;" (assignment_expression "dVar24 = dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31" identifier = (binary_expression "dVar32 * (dVar28 + dVar29) + (dVar28 + dVar29) * dVar31" (binary_expression "dVar32 * (dVar28 + dVar29)" identifier * (parenthesized_expression "(dVar28 + dVar29)" ( (binary_expression "dVar28 + dVar29" identifier + identifier) ))) + (binary_expression "(dVar28 + dVar29) * dVar31" (parenthesized_expression "(dVar28 + dVar29)" ( (binary_expression "dVar28 + dVar29" identifier + identifier) )) * identifier))) ;) (expression_statement "dVar25 = DAT_003f9c68;" (assignment_expression "dVar25 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar24) {\n                dVar25 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar24)" ( (binary_expression "0.0 <= dVar24" number_literal <= identifier) )) (compound_statement "{\n                dVar25 = DAT_003f9608;\n              }" { (expression_statement "dVar25 = DAT_003f9608;" (assignment_expression "dVar25 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar25 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar25 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }" if (parenthesized_expression "(dVar25 * dVar24 < DAT_003f9600)" ( (binary_expression "dVar25 * dVar24 < DAT_003f9600" (binary_expression "dVar25 * dVar24" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar24 = dVar25 / DAT_003f9600;\n              }" { (expression_statement "dVar24 = dVar25 / DAT_003f9600;" (assignment_expression "dVar24 = dVar25 / DAT_003f9600" identifier = (binary_expression "dVar25 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }" else (compound_statement "{\n                dVar24 = DAT_003f9608 / dVar24;\n              }" { (expression_statement "dVar24 = DAT_003f9608 / dVar24;" (assignment_expression "dVar24 = DAT_003f9608 / dVar24" identifier = (binary_expression "DAT_003f9608 / dVar24" identifier / identifier)) ;) }))) (if_statement "if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }" if (parenthesized_expression "(PVar22 != UndefinedPixelTrait)" ( (binary_expression "PVar22 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n                pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);\n              }" { (expression_statement "pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24);" (assignment_expression "pixel[pPVar7[PVar3].offset] =\n                     (float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24)" (subscript_expression "pixel[pPVar7[PVar3].offset]" identifier [ (field_expression "pPVar7[PVar3].offset" (subscript_expression "pPVar7[PVar3]" identifier [ identifier ]) . field_identifier) ]) = (cast_expression "(float)((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24)" ( (binary_expression "(dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])) * dVar24" (parenthesized_expression "(dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16]))" ( (binary_expression "dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28) +\n                             dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])" (binary_expression "dVar32 * ((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28)" identifier * (parenthesized_expression "((double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28)" ( (binary_expression "(double)pQVar15[lVar20] * dVar29 +\n                                       (double)pQVar15[lVar20 + sVar14] * dVar28" (binary_expression "(double)pQVar15[lVar20] * dVar29" (cast_expression "(double)pQVar15[lVar20]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar20]" identifier [ identifier ])) * identifier) + (binary_expression "(double)pQVar15[lVar20 + sVar14] * dVar28" (cast_expression "(double)pQVar15[lVar20 + sVar14]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar20 + sVar14]" identifier [ (binary_expression "lVar20 + sVar14" identifier + identifier) ])) * identifier)) ))) + (binary_expression "dVar31 * (dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])" identifier * (parenthesized_expression "(dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16])" ( (binary_expression "dVar28 * (double)pQVar15[lVar16 + sVar14] +\n                                      dVar29 * (double)pQVar15[lVar16]" (binary_expression "dVar28 * (double)pQVar15[lVar16 + sVar14]" identifier * (cast_expression "(double)pQVar15[lVar16 + sVar14]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar16 + sVar14]" identifier [ (binary_expression "lVar16 + sVar14" identifier + identifier) ]))) + (binary_expression "dVar29 * (double)pQVar15[lVar16]" identifier * (cast_expression "(double)pQVar15[lVar16]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar16]" identifier [ identifier ])))) )))) )) * identifier) )))) ;) })) }) (else_clause "else {\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }" else (compound_statement "{\n              dVar30 = DAT_003f9608;\n              dVar25 = dVar23;\n              dVar24 = dVar23;\n              fVar10 = _DAT_003fa400;\n              if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }\n              dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;\n              dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }\n              if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }\n            }" { (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" identifier = identifier) ;) (expression_statement "dVar24 = dVar23;" (assignment_expression "dVar24 = dVar23" identifier = identifier) ;) (expression_statement "fVar10 = _DAT_003fa400;" (assignment_expression "fVar10 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (pPVar6[4].traits != UndefinedPixelTrait) {\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }" if (parenthesized_expression "(pPVar6[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[4].traits != UndefinedPixelTrait" (field_expression "pPVar6[4].traits" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                lVar18 = pPVar6[4].offset;\n                dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;\n                dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;\n                fVar10 = pQVar15[sVar14 * 3 + lVar18];\n              }" { (expression_statement "lVar18 = pPVar6[4].offset;" (assignment_expression "lVar18 = pPVar6[4].offset" identifier = (field_expression "pPVar6[4].offset" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60;" (assignment_expression "dVar30 = (double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60" identifier = (binary_expression "(double)pQVar15[sVar14 * 2 + lVar18] * DAT_003f9c60" (cast_expression "(double)pQVar15[sVar14 * 2 + lVar18]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[sVar14 * 2 + lVar18]" identifier [ (binary_expression "sVar14 * 2 + lVar18" (binary_expression "sVar14 * 2" identifier * number_literal) + identifier) ])) * identifier)) ;) (expression_statement "dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60;" (assignment_expression "dVar25 = (double)pQVar15[sVar14 + lVar18] * DAT_003f9c60" identifier = (binary_expression "(double)pQVar15[sVar14 + lVar18] * DAT_003f9c60" (cast_expression "(double)pQVar15[sVar14 + lVar18]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[sVar14 + lVar18]" identifier [ (binary_expression "sVar14 + lVar18" identifier + identifier) ])) * identifier)) ;) (expression_statement "dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60;" (assignment_expression "dVar24 = (double)pQVar15[lVar18] * DAT_003f9c60" identifier = (binary_expression "(double)pQVar15[lVar18] * DAT_003f9c60" (cast_expression "(double)pQVar15[lVar18]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar18]" identifier [ identifier ])) * identifier)) ;) (expression_statement "fVar10 = pQVar15[sVar14 * 3 + lVar18];" (assignment_expression "fVar10 = pQVar15[sVar14 * 3 + lVar18]" identifier = (subscript_expression "pQVar15[sVar14 * 3 + lVar18]" identifier [ (binary_expression "sVar14 * 3 + lVar18" (binary_expression "sVar14 * 3" identifier * number_literal) + identifier) ])) ;) })) (expression_statement "dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31;" (assignment_expression "dVar26 = (dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31" identifier = (binary_expression "(dVar29 * dVar24 + dVar28 * dVar25) * dVar32 +\n                       (dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31" (binary_expression "(dVar29 * dVar24 + dVar28 * dVar25) * dVar32" (parenthesized_expression "(dVar29 * dVar24 + dVar28 * dVar25)" ( (binary_expression "dVar29 * dVar24 + dVar28 * dVar25" (binary_expression "dVar29 * dVar24" identifier * identifier) + (binary_expression "dVar28 * dVar25" identifier * identifier)) )) * identifier) + (binary_expression "(dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30) * dVar31" (parenthesized_expression "(dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30)" ( (binary_expression "dVar28 * (double)fVar10 * DAT_003f9c60 + dVar29 * dVar30" (binary_expression "dVar28 * (double)fVar10 * DAT_003f9c60" (binary_expression "dVar28 * (double)fVar10" identifier * (cast_expression "(double)fVar10" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) + (binary_expression "dVar29 * dVar30" identifier * identifier)) )) * identifier))) ;) (expression_statement "dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608);" (assignment_expression "dVar33 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608)" identifier = (cast_expression "(double)((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608)" ( (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398) |\n                               ~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608" (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar26 < DAT_003fa398)" (cast_expression "(ulong)DAT_003f9c68" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(dVar26 < DAT_003fa398)" - (call_expression "(ulong)(dVar26 < DAT_003fa398)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar26 < DAT_003fa398)" ( (binary_expression "dVar26 < DAT_003fa398" identifier < identifier) ))))) | (binary_expression "~-(ulong)(dVar26 < DAT_003fa398) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar26 < DAT_003fa398)" ~ (unary_expression "-(ulong)(dVar26 < DAT_003fa398)" - (call_expression "(ulong)(dVar26 < DAT_003fa398)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar26 < DAT_003fa398)" ( (binary_expression "dVar26 < DAT_003fa398" identifier < identifier) ))))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) (if_statement "if (dVar33 * dVar26 < DAT_003f9600) {\n                dVar26 = dVar33 / DAT_003f9600;\n              }\n              else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }" if (parenthesized_expression "(dVar33 * dVar26 < DAT_003f9600)" ( (binary_expression "dVar33 * dVar26 < DAT_003f9600" (binary_expression "dVar33 * dVar26" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar26 = dVar33 / DAT_003f9600;\n              }" { (expression_statement "dVar26 = dVar33 / DAT_003f9600;" (assignment_expression "dVar26 = dVar33 / DAT_003f9600" identifier = (binary_expression "dVar33 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar26 = DAT_003f9608 / dVar26;\n              }" else (compound_statement "{\n                dVar26 = DAT_003f9608 / dVar26;\n              }" { (expression_statement "dVar26 = DAT_003f9608 / dVar26;" (assignment_expression "dVar26 = DAT_003f9608 / dVar26" identifier = (binary_expression "DAT_003f9608 / dVar26" identifier / identifier)) ;) }))) (if_statement "if (PVar22 != UndefinedPixelTrait) {\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }" if (parenthesized_expression "(PVar22 != UndefinedPixelTrait)" ( (binary_expression "PVar22 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n                pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));\n              }" { (expression_statement "pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)));" (assignment_expression "pixel[pPVar7[PVar3].offset] =\n                     (float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)))" (subscript_expression "pixel[pPVar7[PVar3].offset]" identifier [ (field_expression "pPVar7[PVar3].offset" (subscript_expression "pPVar7[PVar3]" identifier [ identifier ]) . field_identifier) ]) = (cast_expression "(float)(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)))" ( (binary_expression "dVar26 * (dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30))" identifier * (parenthesized_expression "(dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30))" ( (binary_expression "dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)\n                                      + dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)" (binary_expression "dVar32 * ((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)" identifier * (parenthesized_expression "((double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28)" ( (binary_expression "(double)pQVar15[lVar20] * dVar24 * dVar29 +\n                                                (double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28" (binary_expression "(double)pQVar15[lVar20] * dVar24 * dVar29" (binary_expression "(double)pQVar15[lVar20] * dVar24" (cast_expression "(double)pQVar15[lVar20]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar20]" identifier [ identifier ])) * identifier) * identifier) + (binary_expression "(double)pQVar15[lVar20 + sVar14] * dVar25 * dVar28" (binary_expression "(double)pQVar15[lVar20 + sVar14] * dVar25" (cast_expression "(double)pQVar15[lVar20 + sVar14]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar20 + sVar14]" identifier [ (binary_expression "lVar20 + sVar14" identifier + identifier) ])) * identifier) * identifier)) ))) + (binary_expression "dVar31 * (dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)" identifier * (parenthesized_expression "(dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30)" ( (binary_expression "dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14] +\n                                                 dVar29 * (double)pQVar15[lVar16] * dVar30" (binary_expression "dVar28 * (double)fVar10 * DAT_003f9c60 *\n                                                           (double)pQVar15[lVar16 + sVar14]" (binary_expression "dVar28 * (double)fVar10 * DAT_003f9c60" (binary_expression "dVar28 * (double)fVar10" identifier * (cast_expression "(double)fVar10" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) * (cast_expression "(double)pQVar15[lVar16 + sVar14]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar16 + sVar14]" identifier [ (binary_expression "lVar16 + sVar14" identifier + identifier) ]))) + (binary_expression "dVar29 * (double)pQVar15[lVar16] * dVar30" (binary_expression "dVar29 * (double)pQVar15[lVar16]" identifier * (cast_expression "(double)pQVar15[lVar16]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar16]" identifier [ identifier ]))) * identifier)) )))) ))) )))) ;) })) }))) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(lVar20 < (long)sVar14)" ( (binary_expression "lVar20 < (long)sVar14" identifier < (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case AverageInterpolatePixel:" case identifier :) (case_statement "case Average9InterpolatePixel:" case identifier :) (case_statement "case Average16InterpolatePixel:\n    if (method == Average9InterpolatePixel) {\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }\n    else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);\n    dVar29 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;" case identifier : (if_statement "if (method == Average9InterpolatePixel) {\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }\n    else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }" if (parenthesized_expression "(method == Average9InterpolatePixel)" ( (binary_expression "method == Average9InterpolatePixel" identifier == identifier) )) (compound_statement "{\n      if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      x_00 = (ssize_t)(local_178 - DAT_003f9608);\n      if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (ssize_t)(local_170 - DAT_003f9608);\n      sVar14 = 3;\n    }" { (if_statement "if (x < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }" if (parenthesized_expression "(x < DAT_004294e8)" ( (binary_expression "x < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n        local_178 = DAT_004294e8;\n      }" { (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }" else (if_statement "if (DAT_004294f0 < x) {\n        local_178 = DAT_004294f0;\n      }" if (parenthesized_expression "(DAT_004294f0 < x)" ( (binary_expression "DAT_004294f0 < x" identifier < identifier) )) (compound_statement "{\n        local_178 = DAT_004294f0;\n      }" { (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "local_178 = local_178 + DAT_003f9c28;" (assignment_expression "local_178 = local_178 + DAT_003f9c28" identifier = (binary_expression "local_178 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" if (parenthesized_expression "((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30)" ( (binary_expression "(double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_178 & DAT_003f9c70)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)local_178 & DAT_003f9c70)" ( (binary_expression "(ulong)local_178 & DAT_003f9c70" (cast_expression "(ulong)local_178" ( (type_descriptor "ulong" type_identifier) ) identifier) & identifier) ))) < identifier) )) (compound_statement "{\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" { (expression_statement "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );" (assignment_expression "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" identifier = (cast_expression "(double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" ( (binary_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178" (call_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" ( (binary_expression "(double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_178" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_178" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) - (cast_expression "(double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" ( (binary_expression "-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_178 < (double)(long)local_178)" - (call_expression "(ulong)(local_178 < (double)(long)local_178)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_178 < (double)(long)local_178)" ( (binary_expression "local_178 < (double)(long)local_178" identifier < (cast_expression "(double)(long)local_178" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_178" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ))) | (binary_expression "~DAT_003f9c70 & (ulong)local_178" (unary_expression "~DAT_003f9c70" ~ identifier) & (cast_expression "(ulong)local_178" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "x_00 = (ssize_t)(local_178 - DAT_003f9608);" (assignment_expression "x_00 = (ssize_t)(local_178 - DAT_003f9608)" identifier = (cast_expression "(ssize_t)(local_178 - DAT_003f9608)" ( (type_descriptor "ssize_t" primitive_type) ) (parenthesized_expression "(local_178 - DAT_003f9608)" ( (binary_expression "local_178 - DAT_003f9608" identifier - identifier) )))) ;) (if_statement "if (y < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }" if (parenthesized_expression "(y < DAT_004294e8)" ( (binary_expression "y < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n        local_170 = DAT_004294e8;\n      }" { (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }" else (if_statement "if (DAT_004294f0 < y) {\n        local_170 = DAT_004294f0;\n      }" if (parenthesized_expression "(DAT_004294f0 < y)" ( (binary_expression "DAT_004294f0 < y" identifier < identifier) )) (compound_statement "{\n        local_170 = DAT_004294f0;\n      }" { (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "local_170 = local_170 + DAT_003f9c28;" (assignment_expression "local_170 = local_170 + DAT_003f9c28" identifier = (binary_expression "local_170 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" if (parenthesized_expression "((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30)" ( (binary_expression "(double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_170 & DAT_003f9c70)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)local_170 & DAT_003f9c70)" ( (binary_expression "(ulong)local_170 & DAT_003f9c70" (cast_expression "(ulong)local_170" ( (type_descriptor "ulong" type_identifier) ) identifier) & identifier) ))) < identifier) )) (compound_statement "{\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" { (expression_statement "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );" (assignment_expression "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" identifier = (cast_expression "(double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" ( (binary_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170" (call_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" ( (binary_expression "(double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_170" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_170" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) - (cast_expression "(double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" ( (binary_expression "-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_170 < (double)(long)local_170)" - (call_expression "(ulong)(local_170 < (double)(long)local_170)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_170 < (double)(long)local_170)" ( (binary_expression "local_170 < (double)(long)local_170" identifier < (cast_expression "(double)(long)local_170" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_170" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ))) | (binary_expression "~DAT_003f9c70 & (ulong)local_170" (unary_expression "~DAT_003f9c70" ~ identifier) & (cast_expression "(ulong)local_170" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "local_168 = (ssize_t)(local_170 - DAT_003f9608);" (assignment_expression "local_168 = (ssize_t)(local_170 - DAT_003f9608)" identifier = (cast_expression "(ssize_t)(local_170 - DAT_003f9608)" ( (type_descriptor "ssize_t" primitive_type) ) (parenthesized_expression "(local_170 - DAT_003f9608)" ( (binary_expression "local_170 - DAT_003f9608" identifier - identifier) )))) ;) (expression_statement "sVar14 = 3;" (assignment_expression "sVar14 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }" else (compound_statement "{\n      sVar14 = 2;\n      if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }\n    }" { (expression_statement "sVar14 = 2;" (assignment_expression "sVar14 = 2" identifier = number_literal) ;) (if_statement "if (method == Average16InterpolatePixel) {\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }" if (parenthesized_expression "(method == Average16InterpolatePixel)" ( (binary_expression "method == Average16InterpolatePixel" identifier == identifier) )) (compound_statement "{\n        x_00 = x_00 + -1;\n        local_168 = local_168 + -1;\n        sVar14 = 4;\n      }" { (expression_statement "x_00 = x_00 + -1;" (assignment_expression "x_00 = x_00 + -1" identifier = (binary_expression "x_00 + -1" identifier + number_literal)) ;) (expression_statement "local_168 = local_168 + -1;" (assignment_expression "local_168 = local_168 + -1" identifier = (binary_expression "local_168 + -1" identifier + number_literal)) ;) (expression_statement "sVar14 = 4;" (assignment_expression "sVar14 = 4" identifier = number_literal) ;) })) }))) (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,x_00,local_168,sVar14,sVar14,exception)" identifier (argument_list "(source_view,x_00,local_168,sVar14,sVar14,exception)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "dVar29 = DAT_003f9c68;" (assignment_expression "dVar29 = DAT_003f9c68" identifier = identifier) ;) (expression_statement "dVar28 = DAT_003f9c60;" (assignment_expression "dVar28 = DAT_003f9c60" identifier = identifier) ;) (expression_statement "dVar23 = DAT_003f9608;" (assignment_expression "dVar23 = DAT_003f9608" identifier = identifier) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar20 = sVar14 * sVar14;\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" { (expression_statement "lVar20 = sVar14 * sVar14;" (assignment_expression "lVar20 = sVar14 * sVar14" identifier = (binary_expression "sVar14 * sVar14" identifier * identifier)) ;) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (if_statement "if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)sVar14 < 1)" ( (binary_expression "(long)sVar14 < 1" (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        pdVar1 = pixels + lVar20;\n        lVar16 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "pdVar1 = pixels + lVar20;" (assignment_expression "pdVar1 = pixels + lVar20" identifier = (binary_expression "pixels + lVar20" identifier + identifier)) ;) (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar16 < (long)sVar14);" do (compound_statement "{\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar16].channel;\n          PVar22 = pPVar6[PVar3].traits;\n          pPVar7 = destination->channel_map;\n          PVar4 = pPVar7[PVar3].traits;\n          if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }\nLAB_0025586a:\n          lVar16 = lVar16 + 1;\n          sVar14 = source->number_channels;\n        }" { (expression_statement "pPVar6 = source->channel_map;" (assignment_expression "pPVar6 = source->channel_map" identifier = (field_expression "source->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar3 = pPVar6[lVar16].channel;" (assignment_expression "PVar3 = pPVar6[lVar16].channel" identifier = (field_expression "pPVar6[lVar16].channel" (subscript_expression "pPVar6[lVar16]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "PVar22 = pPVar6[PVar3].traits;" (assignment_expression "PVar22 = pPVar6[PVar3].traits" identifier = (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "pPVar7 = destination->channel_map;" (assignment_expression "pPVar7 = destination->channel_map" identifier = (field_expression "destination->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar4 = pPVar7[PVar3].traits;" (assignment_expression "PVar4 = pPVar7[PVar3].traits" identifier = (field_expression "pPVar7[PVar3].traits" (subscript_expression "pPVar7[PVar3]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if ((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)) {\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }" if (parenthesized_expression "((PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait))" ( (binary_expression "(PVar22 != UndefinedPixelTrait) && (PVar4 != UndefinedPixelTrait)" (parenthesized_expression "(PVar22 != UndefinedPixelTrait)" ( (binary_expression "PVar22 != UndefinedPixelTrait" identifier != identifier) )) && (parenthesized_expression "(PVar4 != UndefinedPixelTrait)" ( (binary_expression "PVar4 != UndefinedPixelTrait" identifier != identifier) ))) )) (compound_statement "{\n            if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }\n            if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }\n          }" { (if_statement "if (lVar20 == 0) {\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }" if (parenthesized_expression "(lVar20 == 0)" ( (binary_expression "lVar20 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar31 = 0.0;\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }\n            }" { (expression_statement "dVar31 = 0.0;" (assignment_expression "dVar31 = 0.0" identifier = number_literal) ;) (if_statement "if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }" if (parenthesized_expression "((PVar22 & BlendPixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(PVar22 & BlendPixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(PVar22 & BlendPixelTrait)" ( (binary_expression "PVar22 & BlendPixelTrait" identifier & identifier) )) == identifier) )) (compound_statement "{\n                dVar31 = 0.0;\n                goto LAB_00253e49;\n              }" { (expression_statement "dVar31 = 0.0;" (assignment_expression "dVar31 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00253e49;" goto statement_identifier ;) })) }) (else_clause "else {\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }" else (compound_statement "{\n              pfVar19 = pQVar15 + lVar16;\n              pdVar17 = pixels;\n              do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);\n              if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              dVar31 = 0.0;\n              pdVar17 = pixels;\n              do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);\n            }" { (expression_statement "pfVar19 = pQVar15 + lVar16;" (assignment_expression "pfVar19 = pQVar15 + lVar16" identifier = (binary_expression "pQVar15 + lVar16" identifier + identifier)) ;) (expression_statement "pdVar17 = pixels;" (assignment_expression "pdVar17 = pixels" identifier = identifier) ;) (do_statement "do {\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar1 != pdVar17);" do (compound_statement "{\n                *pdVar17 = (double)*pfVar19;\n                pfVar19 = pfVar19 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              }" { (expression_statement "*pdVar17 = (double)*pfVar19;" (assignment_expression "*pdVar17 = (double)*pfVar19" (pointer_expression "*pdVar17" * identifier) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "pfVar19 = pfVar19 + sVar14;" (assignment_expression "pfVar19 = pfVar19 + sVar14" identifier = (binary_expression "pfVar19 + sVar14" identifier + identifier)) ;) (expression_statement "pdVar17 = pdVar17 + 1;" (assignment_expression "pdVar17 = pdVar17 + 1" identifier = (binary_expression "pdVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar1 != pdVar17)" ( (binary_expression "pdVar1 != pdVar17" identifier != identifier) )) ;) (if_statement "if ((PVar22 & BlendPixelTrait) == UndefinedPixelTrait) {\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }" if (parenthesized_expression "((PVar22 & BlendPixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(PVar22 & BlendPixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(PVar22 & BlendPixelTrait)" ( (binary_expression "PVar22 & BlendPixelTrait" identifier & identifier) )) == identifier) )) (compound_statement "{\n                lVar18 = 0;\n                dVar31 = 0.0;\n                do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);\nLAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }\n                goto LAB_0025586a;\n              }" { (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" identifier = number_literal) ;) (expression_statement "dVar31 = 0.0;" (assignment_expression "dVar31 = 0.0" identifier = number_literal) ;) (do_statement "do {\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                } while (lVar20 - lVar18 != 0 && lVar18 <= lVar20);" do (compound_statement "{\n                  dVar31 = dVar31 + pixels[lVar18];\n                  lVar18 = lVar18 + 1;\n                }" { (expression_statement "dVar31 = dVar31 + pixels[lVar18];" (assignment_expression "dVar31 = dVar31 + pixels[lVar18]" identifier = (binary_expression "dVar31 + pixels[lVar18]" identifier + (subscript_expression "pixels[lVar18]" identifier [ identifier ]))) ;) (expression_statement "lVar18 = lVar18 + 1;" (assignment_expression "lVar18 = lVar18 + 1" identifier = (binary_expression "lVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar20 - lVar18 != 0 && lVar18 <= lVar20)" ( (binary_expression "lVar20 - lVar18 != 0 && lVar18 <= lVar20" (binary_expression "lVar20 - lVar18 != 0" (binary_expression "lVar20 - lVar18" identifier - identifier) != number_literal) && (binary_expression "lVar18 <= lVar20" identifier <= identifier)) )) ;) (labeled_statement "LAB_00253e49:\n                if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }" statement_identifier : (if_statement "if (PVar4 != UndefinedPixelTrait) {\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }" if (parenthesized_expression "(PVar4 != UndefinedPixelTrait)" ( (binary_expression "PVar4 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n                  pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n                }" { (expression_statement "pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);" (assignment_expression "pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20)" (subscript_expression "pixel[pPVar7[PVar3].offset]" identifier [ (field_expression "pPVar7[PVar3].offset" (subscript_expression "pPVar7[PVar3]" identifier [ identifier ]) . field_identifier) ]) = (cast_expression "(float)(dVar31 / (double)lVar20)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar31 / (double)lVar20)" ( (binary_expression "dVar31 / (double)lVar20" identifier / (cast_expression "(double)lVar20" ( (type_descriptor "double" primitive_type) ) identifier)) )))) ;) }))) (goto_statement "goto LAB_0025586a;" goto statement_identifier ;) })) (expression_statement "PVar22 = pPVar6[4].traits;" (assignment_expression "PVar22 = pPVar6[4].traits" identifier = (field_expression "pPVar6[4].traits" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" identifier = number_literal) ;) (expression_statement "dVar31 = 0.0;" (assignment_expression "dVar31 = 0.0" identifier = number_literal) ;) (expression_statement "pdVar17 = pixels;" (assignment_expression "pdVar17 = pixels" identifier = identifier) ;) (do_statement "do {\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              } while (pdVar17 != pdVar1);" do (compound_statement "{\n                if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }\n                dVar31 = dVar31 + dVar32 * dVar24;\n                lVar18 = lVar18 + sVar14;\n                pdVar17 = pdVar17 + 1;\n              }" { (if_statement "if (PVar22 == UndefinedPixelTrait) {\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }\n                else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }" if (parenthesized_expression "(PVar22 == UndefinedPixelTrait)" ( (binary_expression "PVar22 == UndefinedPixelTrait" identifier == identifier) )) (compound_statement "{\n                  dVar32 = *pdVar17;\n                  dVar25 = dVar23;\nLAB_00255912:\n                  dVar24 = dVar23 / dVar25;\n                }" { (expression_statement "dVar32 = *pdVar17;" (assignment_expression "dVar32 = *pdVar17" identifier = (pointer_expression "*pdVar17" * identifier)) ;) (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" identifier = identifier) ;) (labeled_statement "LAB_00255912:\n                  dVar24 = dVar23 / dVar25;" statement_identifier : (expression_statement "dVar24 = dVar23 / dVar25;" (assignment_expression "dVar24 = dVar23 / dVar25" identifier = (binary_expression "dVar23 / dVar25" identifier / identifier)) ;)) }) (else_clause "else {\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }" else (compound_statement "{\n                  dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;\n                  dVar32 = dVar25 * *pdVar17;\n                  *pdVar17 = dVar32;\n                  dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;\n                  dVar24 = dVar24 / DAT_003f9600;\n                }" { (expression_statement "dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28;" (assignment_expression "dVar25 = (double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28" identifier = (binary_expression "(double)pQVar15[lVar18 + pPVar6[4].offset] * dVar28" (cast_expression "(double)pQVar15[lVar18 + pPVar6[4].offset]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar18 + pPVar6[4].offset]" identifier [ (binary_expression "lVar18 + pPVar6[4].offset" identifier + (field_expression "pPVar6[4].offset" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ])) * identifier)) ;) (expression_statement "dVar32 = dVar25 * *pdVar17;" (assignment_expression "dVar32 = dVar25 * *pdVar17" identifier = (binary_expression "dVar25 * *pdVar17" identifier * (pointer_expression "*pdVar17" * identifier))) ;) (expression_statement "*pdVar17 = dVar32;" (assignment_expression "*pdVar17 = dVar32" (pointer_expression "*pdVar17" * identifier) = identifier) ;) (expression_statement "dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608);" (assignment_expression "dVar24 = (double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608)" identifier = (cast_expression "(double)((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608)" ( (binary_expression "(ulong)dVar29 & -(ulong)(dVar25 < 0.0) |\n                                   ~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608" (binary_expression "(ulong)dVar29 & -(ulong)(dVar25 < 0.0)" (cast_expression "(ulong)dVar29" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(dVar25 < 0.0)" - (call_expression "(ulong)(dVar25 < 0.0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar25 < 0.0)" ( (binary_expression "dVar25 < 0.0" identifier < number_literal) ))))) | (binary_expression "~-(ulong)(dVar25 < 0.0) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar25 < 0.0)" ~ (unary_expression "-(ulong)(dVar25 < 0.0)" - (call_expression "(ulong)(dVar25 < 0.0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar25 < 0.0)" ( (binary_expression "dVar25 < 0.0" identifier < number_literal) ))))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) (if_statement "if (DAT_003f9600 <= dVar25 * dVar24) goto LAB_00255912;" if (parenthesized_expression "(DAT_003f9600 <= dVar25 * dVar24)" ( (binary_expression "DAT_003f9600 <= dVar25 * dVar24" identifier <= (binary_expression "dVar25 * dVar24" identifier * identifier)) )) (goto_statement "goto LAB_00255912;" goto statement_identifier ;)) (expression_statement "dVar24 = dVar24 / DAT_003f9600;" (assignment_expression "dVar24 = dVar24 / DAT_003f9600" identifier = (binary_expression "dVar24 / DAT_003f9600" identifier / identifier)) ;) }))) (expression_statement "dVar31 = dVar31 + dVar32 * dVar24;" (assignment_expression "dVar31 = dVar31 + dVar32 * dVar24" identifier = (binary_expression "dVar31 + dVar32 * dVar24" identifier + (binary_expression "dVar32 * dVar24" identifier * identifier))) ;) (expression_statement "lVar18 = lVar18 + sVar14;" (assignment_expression "lVar18 = lVar18 + sVar14" identifier = (binary_expression "lVar18 + sVar14" identifier + identifier)) ;) (expression_statement "pdVar17 = pdVar17 + 1;" (assignment_expression "pdVar17 = pdVar17 + 1" identifier = (binary_expression "pdVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar17 != pdVar1)" ( (binary_expression "pdVar17 != pdVar1" identifier != identifier) )) ;) }))) (if_statement "if (PVar4 != UndefinedPixelTrait) {\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }" if (parenthesized_expression "(PVar4 != UndefinedPixelTrait)" ( (binary_expression "PVar4 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n              pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);\n            }" { (expression_statement "pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20);" (assignment_expression "pixel[pPVar7[PVar3].offset] = (float)(dVar31 / (double)lVar20)" (subscript_expression "pixel[pPVar7[PVar3].offset]" identifier [ (field_expression "pPVar7[PVar3].offset" (subscript_expression "pPVar7[PVar3]" identifier [ identifier ]) . field_identifier) ]) = (cast_expression "(float)(dVar31 / (double)lVar20)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar31 / (double)lVar20)" ( (binary_expression "dVar31 / (double)lVar20" identifier / (cast_expression "(double)lVar20" ( (type_descriptor "double" primitive_type) ) identifier)) )))) ;) })) })) (labeled_statement "LAB_0025586a:\n          lVar16 = lVar16 + 1;" statement_identifier : (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;)) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(lVar16 < (long)sVar14)" ( (binary_expression "lVar16 < (long)sVar14" identifier < (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case BlendInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    dVar29 = _DAT_004294f8;\n    fVar10 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar23 = DAT_003f9600;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;" case identifier : (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception)" identifier (argument_list "(source_view,x_00,local_168,2,2,exception)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "dVar29 = _DAT_004294f8;" (assignment_expression "dVar29 = _DAT_004294f8" identifier = identifier) ;) (expression_statement "fVar10 = _DAT_003fa400;" (assignment_expression "fVar10 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar23 = DAT_003f9600;" (assignment_expression "dVar23 = DAT_003f9600" identifier = identifier) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" { (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (if_statement "if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)sVar14 < 1)" ( (binary_expression "(long)sVar14 < 1" (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pQVar21 = pQVar15;" (assignment_expression "pQVar21 = pQVar15" identifier = identifier) ;) (do_statement "do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);" do (compound_statement "{\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        }" { (expression_statement "pPVar6 = source->channel_map;" (assignment_expression "pPVar6 = source->channel_map" identifier = (field_expression "source->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar3 = pPVar6[lVar20].channel;" (assignment_expression "PVar3 = pPVar6[lVar20].channel" identifier = (field_expression "pPVar6[lVar20].channel" (subscript_expression "pPVar6[lVar20]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }" if (parenthesized_expression "((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) && (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) ))) )) (compound_statement "{\n            if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }\n            dVar32 = y - (double)local_168;\n            dVar31 = DAT_003f9608;\n            if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }\n            if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }\n            if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }\n          }" { (if_statement "if (source->alpha_trait == BlendPixelTrait) {\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }\n            else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }" if (parenthesized_expression "(source->alpha_trait == BlendPixelTrait)" ( (binary_expression "source->alpha_trait == BlendPixelTrait" (field_expression "source->alpha_trait" identifier -> field_identifier) == identifier) )) (compound_statement "{\n              PVar22 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);\n            }" { (expression_statement "PVar22 = pPVar6[4].traits;" (assignment_expression "PVar22 = pPVar6[4].traits" identifier = (field_expression "pPVar6[4].traits" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" identifier = number_literal) ;) (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 4);" do (compound_statement "{\n                fVar2 = fVar10;\n                if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              }" { (expression_statement "fVar2 = fVar10;" (assignment_expression "fVar2 = fVar10" identifier = identifier) ;) (if_statement "if (PVar22 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }" if (parenthesized_expression "(PVar22 != UndefinedPixelTrait)" ( (binary_expression "PVar22 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }" { (expression_statement "fVar2 = pQVar15[lVar18 + pPVar6[4].offset];" (assignment_expression "fVar2 = pQVar15[lVar18 + pPVar6[4].offset]" identifier = (subscript_expression "pQVar15[lVar18 + pPVar6[4].offset]" identifier [ (binary_expression "lVar18 + pPVar6[4].offset" identifier + (field_expression "pPVar6[4].offset" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ])) ;) })) (expression_statement "alpha[lVar16] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "alpha[lVar16] = (double)fVar2 * DAT_003f9c60" (subscript_expression "alpha[lVar16]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (if_statement "if (PVar3 == AlphaPixelChannel) {\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }\n                else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }" if (parenthesized_expression "(PVar3 == AlphaPixelChannel)" ( (binary_expression "PVar3 == AlphaPixelChannel" identifier == identifier) )) (compound_statement "{\n                  pixels[lVar16] = (double)pQVar21[lVar18];\n                }" { (expression_statement "pixels[lVar16] = (double)pQVar21[lVar18];" (assignment_expression "pixels[lVar16] = (double)pQVar21[lVar18]" (subscript_expression "pixels[lVar16]" identifier [ identifier ]) = (cast_expression "(double)pQVar21[lVar18]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar21[lVar18]" identifier [ identifier ]))) ;) }) (else_clause "else {\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }" else (compound_statement "{\n                  pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                }" { (expression_statement "pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];" (assignment_expression "pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18]" (subscript_expression "pixels[lVar16]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pQVar21[lVar18]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar21[lVar18]" identifier [ identifier ])))) ;) }))) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "lVar18 = lVar18 + sVar14;" (assignment_expression "lVar18 = lVar18 + sVar14" identifier = (binary_expression "lVar18 + sVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar16 != 4)" ( (binary_expression "lVar16 != 4" identifier != number_literal) )) ;) }) (else_clause "else {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }" else (compound_statement "{\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);\n            }" { (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pQVar21;" (assignment_expression "pfVar19 = pQVar21" identifier = identifier) ;) (do_statement "do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 4);" do (compound_statement "{\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              }" { (expression_statement "alpha[lVar16] = DAT_003f9608;" (assignment_expression "alpha[lVar16] = DAT_003f9608" (subscript_expression "alpha[lVar16]" identifier [ identifier ]) = identifier) ;) (expression_statement "pixels[lVar16] = (double)*pfVar19;" (assignment_expression "pixels[lVar16] = (double)*pfVar19" (subscript_expression "pixels[lVar16]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + sVar14;" (assignment_expression "pfVar19 = pfVar19 + sVar14" identifier = (binary_expression "pfVar19 + sVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar16 != 4)" ( (binary_expression "lVar16 != 4" identifier != number_literal) )) ;) }))) (expression_statement "dVar32 = y - (double)local_168;" (assignment_expression "dVar32 = y - (double)local_168" identifier = (binary_expression "y - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar31 = DAT_003f9608;" (assignment_expression "dVar31 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (dVar29 <= dVar32) {\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }\n            else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }" if (parenthesized_expression "(dVar29 <= dVar32)" ( (binary_expression "dVar29 <= dVar32" identifier <= identifier) )) (compound_statement "{\n              alpha[0] = alpha[2];\n              pixels[0] = pixels[2];\nLAB_00254349:\n              alpha[1] = alpha[3];\n              pixels[1] = pixels[3];\n            }" { (expression_statement "alpha[0] = alpha[2];" (assignment_expression "alpha[0] = alpha[2]" (subscript_expression "alpha[0]" identifier [ number_literal ]) = (subscript_expression "alpha[2]" identifier [ number_literal ])) ;) (expression_statement "pixels[0] = pixels[2];" (assignment_expression "pixels[0] = pixels[2]" (subscript_expression "pixels[0]" identifier [ number_literal ]) = (subscript_expression "pixels[2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00254349:\n              alpha[1] = alpha[3];" statement_identifier : (expression_statement "alpha[1] = alpha[3];" (assignment_expression "alpha[1] = alpha[3]" (subscript_expression "alpha[1]" identifier [ number_literal ]) = (subscript_expression "alpha[3]" identifier [ number_literal ])) ;)) (expression_statement "pixels[1] = pixels[3];" (assignment_expression "pixels[1] = pixels[3]" (subscript_expression "pixels[1]" identifier [ number_literal ]) = (subscript_expression "pixels[3]" identifier [ number_literal ])) ;) }) (else_clause "else if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }" else (if_statement "if (dVar32 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }\n            else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }" if (parenthesized_expression "(dVar32 <= DAT_00407738)" ( (binary_expression "dVar32 <= DAT_00407738" identifier <= identifier) )) (compound_statement "{\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\n              if (DAT_00407738 < dVar32) goto LAB_002544fd;\n            }" { (if_statement "if (_DAT_004294f8 <= dVar32) goto LAB_00254349;" if (parenthesized_expression "(_DAT_004294f8 <= dVar32)" ( (binary_expression "_DAT_004294f8 <= dVar32" identifier <= identifier) )) (goto_statement "goto LAB_00254349;" goto statement_identifier ;)) (if_statement "if (DAT_00407738 < dVar32) goto LAB_002544fd;" if (parenthesized_expression "(DAT_00407738 < dVar32)" ( (binary_expression "DAT_00407738 < dVar32" identifier < identifier) )) (goto_statement "goto LAB_002544fd;" goto statement_identifier ;)) }) (else_clause "else {\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }" else (compound_statement "{\n              alpha[0] = alpha[0] + alpha[2];\n              pixels[0] = pixels[0] + pixels[2];\n              dVar31 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar32) goto LAB_00254349;\nLAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];\n              pixels[1] = pixels[1] + pixels[3];\n              dVar31 = DAT_00407728;\n            }" { (expression_statement "alpha[0] = alpha[0] + alpha[2];" (assignment_expression "alpha[0] = alpha[0] + alpha[2]" (subscript_expression "alpha[0]" identifier [ number_literal ]) = (binary_expression "alpha[0] + alpha[2]" (subscript_expression "alpha[0]" identifier [ number_literal ]) + (subscript_expression "alpha[2]" identifier [ number_literal ]))) ;) (expression_statement "pixels[0] = pixels[0] + pixels[2];" (assignment_expression "pixels[0] = pixels[0] + pixels[2]" (subscript_expression "pixels[0]" identifier [ number_literal ]) = (binary_expression "pixels[0] + pixels[2]" (subscript_expression "pixels[0]" identifier [ number_literal ]) + (subscript_expression "pixels[2]" identifier [ number_literal ]))) ;) (expression_statement "dVar31 = DAT_00407728;" (assignment_expression "dVar31 = DAT_00407728" identifier = identifier) ;) (if_statement "if (_DAT_004294f8 <= dVar32) goto LAB_00254349;" if (parenthesized_expression "(_DAT_004294f8 <= dVar32)" ( (binary_expression "_DAT_004294f8 <= dVar32" identifier <= identifier) )) (goto_statement "goto LAB_00254349;" goto statement_identifier ;)) (labeled_statement "LAB_002544fd:\n              alpha[1] = alpha[1] + alpha[3];" statement_identifier : (expression_statement "alpha[1] = alpha[1] + alpha[3];" (assignment_expression "alpha[1] = alpha[1] + alpha[3]" (subscript_expression "alpha[1]" identifier [ number_literal ]) = (binary_expression "alpha[1] + alpha[3]" (subscript_expression "alpha[1]" identifier [ number_literal ]) + (subscript_expression "alpha[3]" identifier [ number_literal ]))) ;)) (expression_statement "pixels[1] = pixels[1] + pixels[3];" (assignment_expression "pixels[1] = pixels[1] + pixels[3]" (subscript_expression "pixels[1]" identifier [ number_literal ]) = (binary_expression "pixels[1] + pixels[3]" (subscript_expression "pixels[1]" identifier [ number_literal ]) + (subscript_expression "pixels[3]" identifier [ number_literal ]))) ;) (expression_statement "dVar31 = DAT_00407728;" (assignment_expression "dVar31 = DAT_00407728" identifier = identifier) ;) }))))) (if_statement "if (x - (double)x_00 < dVar29) {\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }\n            else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }" if (parenthesized_expression "(x - (double)x_00 < dVar29)" ( (binary_expression "x - (double)x_00 < dVar29" (binary_expression "x - (double)x_00" identifier - (cast_expression "(double)x_00" ( (type_descriptor "double" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n              if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }\n            }" { (if_statement "if (DAT_00407738 < x - (double)x_00) {\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }" if (parenthesized_expression "(DAT_00407738 < x - (double)x_00)" ( (binary_expression "DAT_00407738 < x - (double)x_00" identifier < (binary_expression "x - (double)x_00" identifier - (cast_expression "(double)x_00" ( (type_descriptor "double" primitive_type) ) identifier))) )) (compound_statement "{\n                dVar31 = dVar31 + dVar31;\n                alpha[0] = alpha[0] + alpha[1];\n                pixels[0] = pixels[0] + pixels[1];\n              }" { (expression_statement "dVar31 = dVar31 + dVar31;" (assignment_expression "dVar31 = dVar31 + dVar31" identifier = (binary_expression "dVar31 + dVar31" identifier + identifier)) ;) (expression_statement "alpha[0] = alpha[0] + alpha[1];" (assignment_expression "alpha[0] = alpha[0] + alpha[1]" (subscript_expression "alpha[0]" identifier [ number_literal ]) = (binary_expression "alpha[0] + alpha[1]" (subscript_expression "alpha[0]" identifier [ number_literal ]) + (subscript_expression "alpha[1]" identifier [ number_literal ]))) ;) (expression_statement "pixels[0] = pixels[0] + pixels[1];" (assignment_expression "pixels[0] = pixels[0] + pixels[1]" (subscript_expression "pixels[0]" identifier [ number_literal ]) = (binary_expression "pixels[0] + pixels[1]" (subscript_expression "pixels[0]" identifier [ number_literal ]) + (subscript_expression "pixels[1]" identifier [ number_literal ]))) ;) })) }) (else_clause "else {\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }" else (compound_statement "{\n              alpha[0] = alpha[1];\n              pixels[0] = pixels[1];\n            }" { (expression_statement "alpha[0] = alpha[1];" (assignment_expression "alpha[0] = alpha[1]" (subscript_expression "alpha[0]" identifier [ number_literal ]) = (subscript_expression "alpha[1]" identifier [ number_literal ])) ;) (expression_statement "pixels[0] = pixels[1];" (assignment_expression "pixels[0] = pixels[1]" (subscript_expression "pixels[0]" identifier [ number_literal ]) = (subscript_expression "pixels[1]" identifier [ number_literal ])) ;) }))) (if_statement "if (PVar3 == AlphaPixelChannel) {\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }\n            else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }" if (parenthesized_expression "(PVar3 == AlphaPixelChannel)" ( (binary_expression "PVar3 == AlphaPixelChannel" identifier == identifier) )) (compound_statement "{\n              dVar32 = DAT_003fa390;\n              if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }\n            }" { (expression_statement "dVar32 = DAT_003fa390;" (assignment_expression "dVar32 = DAT_003fa390" identifier = identifier) ;) (if_statement "if (dVar23 <= dVar31) {\n                dVar32 = dVar28 / dVar31;\n              }" if (parenthesized_expression "(dVar23 <= dVar31)" ( (binary_expression "dVar23 <= dVar31" identifier <= identifier) )) (compound_statement "{\n                dVar32 = dVar28 / dVar31;\n              }" { (expression_statement "dVar32 = dVar28 / dVar31;" (assignment_expression "dVar32 = dVar28 / dVar31" identifier = (binary_expression "dVar28 / dVar31" identifier / identifier)) ;) })) }) (else_clause "else {\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }" else (compound_statement "{\n              dVar31 = DAT_003f9c68;\n              if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }\n              if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }\n            }" { (expression_statement "dVar31 = DAT_003f9c68;" (assignment_expression "dVar31 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= alpha[0]) {\n                dVar31 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= alpha[0])" ( (binary_expression "0.0 <= alpha[0]" number_literal <= (subscript_expression "alpha[0]" identifier [ number_literal ])) )) (compound_statement "{\n                dVar31 = DAT_003f9608;\n              }" { (expression_statement "dVar31 = DAT_003f9608;" (assignment_expression "dVar31 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (alpha[0] * dVar31 < dVar23) {\n                dVar32 = dVar31 / dVar23;\n              }\n              else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }" if (parenthesized_expression "(alpha[0] * dVar31 < dVar23)" ( (binary_expression "alpha[0] * dVar31 < dVar23" (binary_expression "alpha[0] * dVar31" (subscript_expression "alpha[0]" identifier [ number_literal ]) * identifier) < identifier) )) (compound_statement "{\n                dVar32 = dVar31 / dVar23;\n              }" { (expression_statement "dVar32 = dVar31 / dVar23;" (assignment_expression "dVar32 = dVar31 / dVar23" identifier = (binary_expression "dVar31 / dVar23" identifier / identifier)) ;) }) (else_clause "else {\n                dVar32 = DAT_003f9608 / alpha[0];\n              }" else (compound_statement "{\n                dVar32 = DAT_003f9608 / alpha[0];\n              }" { (expression_statement "dVar32 = DAT_003f9608 / alpha[0];" (assignment_expression "dVar32 = DAT_003f9608 / alpha[0]" identifier = (binary_expression "DAT_003f9608 / alpha[0]" identifier / (subscript_expression "alpha[0]" identifier [ number_literal ]))) ;) }))) }))) (if_statement "if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }" if (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) (compound_statement "{\n              pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);\n            }" { (expression_statement "pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0]);" (assignment_expression "pixel[destination->channel_map[PVar3].offset] = (float)(dVar32 * pixels[0])" (subscript_expression "pixel[destination->channel_map[PVar3].offset]" identifier [ (field_expression "destination->channel_map[PVar3].offset" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) ]) = (cast_expression "(float)(dVar32 * pixels[0])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar32 * pixels[0])" ( (binary_expression "dVar32 * pixels[0]" identifier * (subscript_expression "pixels[0]" identifier [ number_literal ])) )))) ;) })) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (expression_statement "pQVar21 = pQVar21 + 1;" (assignment_expression "pQVar21 = pQVar21 + 1" identifier = (binary_expression "pQVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar20 < (long)sVar14)" ( (binary_expression "lVar20 < (long)sVar14" identifier < (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case CatromInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_00406598;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;" case identifier : (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception)" identifier (argument_list "(source_view,x_00 + -1,local_168 + -1,4,4,exception)" ( identifier , (binary_expression "x_00 + -1" identifier + number_literal) , (binary_expression "local_168 + -1" identifier + number_literal) , number_literal , number_literal , identifier )))) ;) (expression_statement "dVar28 = DAT_00406598;" (assignment_expression "dVar28 = DAT_00406598" identifier = identifier) ;) (expression_statement "fVar10 = _DAT_003fa400;" (assignment_expression "fVar10 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar23 = DAT_003f9608;" (assignment_expression "dVar23 = DAT_003f9608" identifier = identifier) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" { (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (if_statement "if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)sVar14 < 1)" ( (binary_expression "(long)sVar14 < 1" (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pQVar21 = pQVar15;" (assignment_expression "pQVar21 = pQVar15" identifier = identifier) ;) (do_statement "do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);" do (compound_statement "{\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        }" { (expression_statement "pPVar6 = source->channel_map;" (assignment_expression "pPVar6 = source->channel_map" identifier = (field_expression "source->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar3 = pPVar6[lVar20].channel;" (assignment_expression "PVar3 = pPVar6[lVar20].channel" identifier = (field_expression "pPVar6[lVar20].channel" (subscript_expression "pPVar6[lVar20]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }" if (parenthesized_expression "((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) && (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) ))) )) (compound_statement "{\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar25 = x - (double)x_00;\n            dVar29 = dVar23 - dVar25;\n            dVar31 = dVar25 * dVar28 * dVar29;\n            dVar24 = dVar29 * dVar31;\n            dVar31 = dVar31 * dVar25;\n            dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);\n            dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);\n            dVar29 = y - (double)local_168;\n            dVar30 = dVar23 - dVar29;\n            dVar26 = dVar29 * dVar28 * dVar30;\n            dVar25 = dVar30 * dVar26;\n            dVar26 = dVar26 * dVar29;\n            dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);\n            dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);\n            dVar29 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }\n          }" { (expression_statement "PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;" (assignment_expression "PVar22 = pPVar6[PVar3].traits & BlendPixelTrait" identifier = (binary_expression "pPVar6[PVar3].traits & BlendPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) & identifier)) ;) (if_statement "if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }" if (parenthesized_expression "(PVar22 == UndefinedPixelTrait)" ( (binary_expression "PVar22 == UndefinedPixelTrait" identifier == identifier) )) (compound_statement "{\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }" { (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pQVar21;" (assignment_expression "pfVar19 = pQVar21" identifier = identifier) ;) (do_statement "do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);" do (compound_statement "{\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              }" { (expression_statement "alpha[lVar16] = DAT_003f9608;" (assignment_expression "alpha[lVar16] = DAT_003f9608" (subscript_expression "alpha[lVar16]" identifier [ identifier ]) = identifier) ;) (expression_statement "pixels[lVar16] = (double)*pfVar19;" (assignment_expression "pixels[lVar16] = (double)*pfVar19" (subscript_expression "pixels[lVar16]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + sVar14;" (assignment_expression "pfVar19 = pfVar19 + sVar14" identifier = (binary_expression "pfVar19 + sVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar16 != 0x10)" ( (binary_expression "lVar16 != 0x10" identifier != number_literal) )) ;) }) (else_clause "else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }" else (compound_statement "{\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }" { (expression_statement "PVar4 = pPVar6[4].traits;" (assignment_expression "PVar4 = pPVar6[4].traits" identifier = (field_expression "pPVar6[4].traits" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" identifier = number_literal) ;) (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);" do (compound_statement "{\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              }" { (expression_statement "fVar2 = fVar10;" (assignment_expression "fVar2 = fVar10" identifier = identifier) ;) (if_statement "if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }" if (parenthesized_expression "(PVar4 != UndefinedPixelTrait)" ( (binary_expression "PVar4 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }" { (expression_statement "fVar2 = pQVar15[lVar18 + pPVar6[4].offset];" (assignment_expression "fVar2 = pQVar15[lVar18 + pPVar6[4].offset]" identifier = (subscript_expression "pQVar15[lVar18 + pPVar6[4].offset]" identifier [ (binary_expression "lVar18 + pPVar6[4].offset" identifier + (field_expression "pPVar6[4].offset" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ])) ;) })) (expression_statement "alpha[lVar16] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "alpha[lVar16] = (double)fVar2 * DAT_003f9c60" (subscript_expression "alpha[lVar16]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (expression_statement "pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];" (assignment_expression "pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18]" (subscript_expression "pixels[lVar16]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pQVar21[lVar18]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar21[lVar18]" identifier [ identifier ])))) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "lVar18 = lVar18 + sVar14;" (assignment_expression "lVar18 = lVar18 + sVar14" identifier = (binary_expression "lVar18 + sVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar16 != 0x10)" ( (binary_expression "lVar16 != 0x10" identifier != number_literal) )) ;) }))) (expression_statement "dVar25 = x - (double)x_00;" (assignment_expression "dVar25 = x - (double)x_00" identifier = (binary_expression "x - (double)x_00" identifier - (cast_expression "(double)x_00" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar29 = dVar23 - dVar25;" (assignment_expression "dVar29 = dVar23 - dVar25" identifier = (binary_expression "dVar23 - dVar25" identifier - identifier)) ;) (expression_statement "dVar31 = dVar25 * dVar28 * dVar29;" (assignment_expression "dVar31 = dVar25 * dVar28 * dVar29" identifier = (binary_expression "dVar25 * dVar28 * dVar29" (binary_expression "dVar25 * dVar28" identifier * identifier) * identifier)) ;) (expression_statement "dVar24 = dVar29 * dVar31;" (assignment_expression "dVar24 = dVar29 * dVar31" identifier = (binary_expression "dVar29 * dVar31" identifier * identifier)) ;) (expression_statement "dVar31 = dVar31 * dVar25;" (assignment_expression "dVar31 = dVar31 * dVar25" identifier = (binary_expression "dVar31 * dVar25" identifier * identifier)) ;) (expression_statement "dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24);" (assignment_expression "dVar32 = (dVar29 - dVar24) + (dVar31 - dVar24)" identifier = (binary_expression "(dVar29 - dVar24) + (dVar31 - dVar24)" (parenthesized_expression "(dVar29 - dVar24)" ( (binary_expression "dVar29 - dVar24" identifier - identifier) )) + (parenthesized_expression "(dVar31 - dVar24)" ( (binary_expression "dVar31 - dVar24" identifier - identifier) )))) ;) (expression_statement "dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24);" (assignment_expression "dVar33 = (dVar25 - dVar31) - (dVar31 - dVar24)" identifier = (binary_expression "(dVar25 - dVar31) - (dVar31 - dVar24)" (parenthesized_expression "(dVar25 - dVar31)" ( (binary_expression "dVar25 - dVar31" identifier - identifier) )) - (parenthesized_expression "(dVar31 - dVar24)" ( (binary_expression "dVar31 - dVar24" identifier - identifier) )))) ;) (expression_statement "dVar29 = y - (double)local_168;" (assignment_expression "dVar29 = y - (double)local_168" identifier = (binary_expression "y - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar30 = dVar23 - dVar29;" (assignment_expression "dVar30 = dVar23 - dVar29" identifier = (binary_expression "dVar23 - dVar29" identifier - identifier)) ;) (expression_statement "dVar26 = dVar29 * dVar28 * dVar30;" (assignment_expression "dVar26 = dVar29 * dVar28 * dVar30" identifier = (binary_expression "dVar29 * dVar28 * dVar30" (binary_expression "dVar29 * dVar28" identifier * identifier) * identifier)) ;) (expression_statement "dVar25 = dVar30 * dVar26;" (assignment_expression "dVar25 = dVar30 * dVar26" identifier = (binary_expression "dVar30 * dVar26" identifier * identifier)) ;) (expression_statement "dVar26 = dVar26 * dVar29;" (assignment_expression "dVar26 = dVar26 * dVar29" identifier = (binary_expression "dVar26 * dVar29" identifier * identifier)) ;) (expression_statement "dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25);" (assignment_expression "dVar34 = (dVar30 - dVar25) + (dVar26 - dVar25)" identifier = (binary_expression "(dVar30 - dVar25) + (dVar26 - dVar25)" (parenthesized_expression "(dVar30 - dVar25)" ( (binary_expression "dVar30 - dVar25" identifier - identifier) )) + (parenthesized_expression "(dVar26 - dVar25)" ( (binary_expression "dVar26 - dVar25" identifier - identifier) )))) ;) (expression_statement "dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25);" (assignment_expression "dVar30 = (dVar29 - dVar26) - (dVar26 - dVar25)" identifier = (binary_expression "(dVar29 - dVar26) - (dVar26 - dVar25)" (parenthesized_expression "(dVar29 - dVar26)" ( (binary_expression "dVar29 - dVar26" identifier - identifier) )) - (parenthesized_expression "(dVar26 - dVar25)" ( (binary_expression "dVar26 - dVar25" identifier - identifier) )))) ;) (expression_statement "dVar29 = DAT_003f9608;" (assignment_expression "dVar29 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (PVar22 == UndefinedPixelTrait) {\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }" if (parenthesized_expression "(PVar22 == UndefinedPixelTrait)" ( (binary_expression "PVar22 == UndefinedPixelTrait" identifier == identifier) )) (compound_statement "{\n              dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n            }" { (expression_statement "dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26;" (assignment_expression "dVar29 = (dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26" identifier = (binary_expression "(dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34 +\n                       (dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26" (binary_expression "(dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25 +\n                       (dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34" (binary_expression "(dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30 +\n                       (dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25" (binary_expression "(dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]) * dVar30" (parenthesized_expression "(dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb])" ( (binary_expression "dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9] +\n                       dVar31 * alpha[0xb]" (binary_expression "dVar33 * alpha[10] + dVar24 * alpha[8] + dVar32 * alpha[9]" (binary_expression "dVar33 * alpha[10] + dVar24 * alpha[8]" (binary_expression "dVar33 * alpha[10]" identifier * (subscript_expression "alpha[10]" identifier [ number_literal ])) + (binary_expression "dVar24 * alpha[8]" identifier * (subscript_expression "alpha[8]" identifier [ number_literal ]))) + (binary_expression "dVar32 * alpha[9]" identifier * (subscript_expression "alpha[9]" identifier [ number_literal ]))) + (binary_expression "dVar31 * alpha[0xb]" identifier * (subscript_expression "alpha[0xb]" identifier [ number_literal ]))) )) * identifier) + (binary_expression "(dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]) * dVar25" (parenthesized_expression "(dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3])" ( (binary_expression "dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2] +\n                       dVar31 * alpha[3]" (binary_expression "dVar24 * alpha[0] + dVar32 * alpha[1] + dVar33 * alpha[2]" (binary_expression "dVar24 * alpha[0] + dVar32 * alpha[1]" (binary_expression "dVar24 * alpha[0]" identifier * (subscript_expression "alpha[0]" identifier [ number_literal ])) + (binary_expression "dVar32 * alpha[1]" identifier * (subscript_expression "alpha[1]" identifier [ number_literal ]))) + (binary_expression "dVar33 * alpha[2]" identifier * (subscript_expression "alpha[2]" identifier [ number_literal ]))) + (binary_expression "dVar31 * alpha[3]" identifier * (subscript_expression "alpha[3]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]) * dVar34" (parenthesized_expression "(dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7])" ( (binary_expression "dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5] +\n                       dVar31 * alpha[7]" (binary_expression "dVar33 * alpha[6] + dVar24 * alpha[4] + dVar32 * alpha[5]" (binary_expression "dVar33 * alpha[6] + dVar24 * alpha[4]" (binary_expression "dVar33 * alpha[6]" identifier * (subscript_expression "alpha[6]" identifier [ number_literal ])) + (binary_expression "dVar24 * alpha[4]" identifier * (subscript_expression "alpha[4]" identifier [ number_literal ]))) + (binary_expression "dVar32 * alpha[5]" identifier * (subscript_expression "alpha[5]" identifier [ number_literal ]))) + (binary_expression "dVar31 * alpha[7]" identifier * (subscript_expression "alpha[7]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]) * dVar26" (parenthesized_expression "(dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf])" ( (binary_expression "dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd] +\n                       dVar31 * alpha[0xf]" (binary_expression "dVar33 * alpha[0xe] + dVar24 * alpha[0xc] + dVar32 * alpha[0xd]" (binary_expression "dVar33 * alpha[0xe] + dVar24 * alpha[0xc]" (binary_expression "dVar33 * alpha[0xe]" identifier * (subscript_expression "alpha[0xe]" identifier [ number_literal ])) + (binary_expression "dVar24 * alpha[0xc]" identifier * (subscript_expression "alpha[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar32 * alpha[0xd]" identifier * (subscript_expression "alpha[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar31 * alpha[0xf]" identifier * (subscript_expression "alpha[0xf]" identifier [ number_literal ]))) )) * identifier))) ;) (expression_statement "dVar27 = DAT_003f9c68;" (assignment_expression "dVar27 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar29) {\n                dVar27 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar29)" ( (binary_expression "0.0 <= dVar29" number_literal <= identifier) )) (compound_statement "{\n                dVar27 = DAT_003f9608;\n              }" { (expression_statement "dVar27 = DAT_003f9608;" (assignment_expression "dVar27 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar29 * dVar27 < DAT_003f9600) {\n                dVar29 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" if (parenthesized_expression "(dVar29 * dVar27 < DAT_003f9600)" ( (binary_expression "dVar29 * dVar27 < DAT_003f9600" (binary_expression "dVar29 * dVar27" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar29 = dVar27 / DAT_003f9600;\n              }" { (expression_statement "dVar29 = dVar27 / DAT_003f9600;" (assignment_expression "dVar29 = dVar27 / DAT_003f9600" identifier = (binary_expression "dVar27 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" else (compound_statement "{\n                dVar29 = DAT_003f9608 / dVar29;\n              }" { (expression_statement "dVar29 = DAT_003f9608 / dVar29;" (assignment_expression "dVar29 = DAT_003f9608 / dVar29" identifier = (binary_expression "DAT_003f9608 / dVar29" identifier / identifier)) ;) }))) })) (if_statement "if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }" if (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) (compound_statement "{\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);\n            }" { (expression_statement "pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29);" (assignment_expression "pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29)" (subscript_expression "pixel[destination->channel_map[PVar3].offset]" identifier [ (field_expression "destination->channel_map[PVar3].offset" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) ]) = (cast_expression "(float)((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29)" ( (binary_expression "(dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26) * dVar29" (parenthesized_expression "(dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26)" ( (binary_expression "dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])\n                           + (dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26" (binary_expression "dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34 +\n                            dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])" (binary_expression "dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]) +\n                            (dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34" (binary_expression "dVar25 * (dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3])" identifier * (parenthesized_expression "(dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3])" ( (binary_expression "dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1] +\n                                     dVar31 * pixels[3]" (binary_expression "dVar33 * pixels[2] + dVar24 * pixels[0] + dVar32 * pixels[1]" (binary_expression "dVar33 * pixels[2] + dVar24 * pixels[0]" (binary_expression "dVar33 * pixels[2]" identifier * (subscript_expression "pixels[2]" identifier [ number_literal ])) + (binary_expression "dVar24 * pixels[0]" identifier * (subscript_expression "pixels[0]" identifier [ number_literal ]))) + (binary_expression "dVar32 * pixels[1]" identifier * (subscript_expression "pixels[1]" identifier [ number_literal ]))) + (binary_expression "dVar31 * pixels[3]" identifier * (subscript_expression "pixels[3]" identifier [ number_literal ]))) ))) + (binary_expression "(dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]) * dVar34" (parenthesized_expression "(dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7])" ( (binary_expression "dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5] +\n                            dVar31 * pixels[7]" (binary_expression "dVar33 * pixels[6] + dVar24 * pixels[4] + dVar32 * pixels[5]" (binary_expression "dVar33 * pixels[6] + dVar24 * pixels[4]" (binary_expression "dVar33 * pixels[6]" identifier * (subscript_expression "pixels[6]" identifier [ number_literal ])) + (binary_expression "dVar24 * pixels[4]" identifier * (subscript_expression "pixels[4]" identifier [ number_literal ]))) + (binary_expression "dVar32 * pixels[5]" identifier * (subscript_expression "pixels[5]" identifier [ number_literal ]))) + (binary_expression "dVar31 * pixels[7]" identifier * (subscript_expression "pixels[7]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "dVar30 * (dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])" identifier * (parenthesized_expression "(dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9])" ( (binary_expression "dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8] + dVar32 * pixels[9]" (binary_expression "dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10] + dVar24 * pixels[8]" (binary_expression "dVar31 * pixels[0xb] +\n                                     dVar33 * pixels[10]" (binary_expression "dVar31 * pixels[0xb]" identifier * (subscript_expression "pixels[0xb]" identifier [ number_literal ])) + (binary_expression "dVar33 * pixels[10]" identifier * (subscript_expression "pixels[10]" identifier [ number_literal ]))) + (binary_expression "dVar24 * pixels[8]" identifier * (subscript_expression "pixels[8]" identifier [ number_literal ]))) + (binary_expression "dVar32 * pixels[9]" identifier * (subscript_expression "pixels[9]" identifier [ number_literal ]))) )))) + (binary_expression "(dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]) *\n                             dVar26" (parenthesized_expression "(dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd])" ( (binary_expression "dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc] + dVar32 * pixels[0xd]" (binary_expression "dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe] + dVar24 * pixels[0xc]" (binary_expression "dVar31 * pixels[0xf] +\n                             dVar33 * pixels[0xe]" (binary_expression "dVar31 * pixels[0xf]" identifier * (subscript_expression "pixels[0xf]" identifier [ number_literal ])) + (binary_expression "dVar33 * pixels[0xe]" identifier * (subscript_expression "pixels[0xe]" identifier [ number_literal ]))) + (binary_expression "dVar24 * pixels[0xc]" identifier * (subscript_expression "pixels[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar32 * pixels[0xd]" identifier * (subscript_expression "pixels[0xd]" identifier [ number_literal ]))) )) * identifier)) )) * identifier) )))) ;) })) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (expression_statement "pQVar21 = pQVar21 + 1;" (assignment_expression "pQVar21 = pQVar21 + 1" identifier = (binary_expression "pQVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar20 < (long)sVar14)" ( (binary_expression "lVar20 < (long)sVar14" identifier < (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case IntegerInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;" case identifier : (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,x_00,local_168,1,1,exception)" identifier (argument_list "(source_view,x_00,local_168,1,1,exception)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }" { (if_statement "if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)source->number_channels < 1)" ( (binary_expression "(long)source->number_channels < 1" (cast_expression "(long)source->number_channels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "source->number_channels" identifier -> field_identifier)) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);" do (compound_statement "{\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        }" { (expression_statement "PVar3 = source->channel_map[lVar20].channel;" (assignment_expression "PVar3 = source->channel_map[lVar20].channel" identifier = (field_expression "source->channel_map[lVar20].channel" (subscript_expression "source->channel_map[lVar20]" (field_expression "source->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "pPVar6 = destination->channel_map;" (assignment_expression "pPVar6 = destination->channel_map" identifier = (field_expression "destination->channel_map" identifier -> field_identifier)) ;) (if_statement "if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }" if (parenthesized_expression "(((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) )) && (parenthesized_expression "(source->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "source->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "source->channel_map[PVar3].traits" (subscript_expression "source->channel_map[PVar3]" (field_expression "source->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) ))) )) && (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) ))) )) (compound_statement "{\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }" { (expression_statement "pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];" (assignment_expression "pixel[pPVar6[PVar3].offset] = pQVar15[lVar20]" (subscript_expression "pixel[pPVar6[PVar3].offset]" identifier [ (field_expression "pPVar6[PVar3].offset" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) ]) = (subscript_expression "pQVar15[lVar20]" identifier [ identifier ])) ;) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar20 < (long)source->number_channels)" ( (binary_expression "lVar20 < (long)source->number_channels" identifier < (cast_expression "(long)source->number_channels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "source->number_channels" identifier -> field_identifier))) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case MeshInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar10 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;" case identifier : (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,x_00,local_168,2,2,exception)" identifier (argument_list "(source_view,x_00,local_168,2,2,exception)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "fVar12 = DAT_0041abe0;" (assignment_expression "fVar12 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar2 = DAT_0041abdc;" (assignment_expression "fVar2 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar10 = DAT_0041abd8;" (assignment_expression "fVar10 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "uVar11 = DAT_003f9c70;" (assignment_expression "uVar11 = DAT_003f9c70" identifier = identifier) ;) (expression_statement "dVar23 = DAT_003f9608;" (assignment_expression "dVar23 = DAT_003f9608" identifier = identifier) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" { (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (if_statement "if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)sVar14 < 1)" ( (binary_expression "(long)sVar14 < 1" (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        } while (lVar20 < (long)sVar14);" do (compound_statement "{\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n        }" { (expression_statement "pPVar6 = source->channel_map;" (assignment_expression "pPVar6 = source->channel_map" identifier = (field_expression "source->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar3 = pPVar6[lVar20].channel;" (assignment_expression "PVar3 = pPVar6[lVar20].channel" identifier = (field_expression "pPVar6[lVar20].channel" (subscript_expression "pPVar6[lVar20]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }" if (parenthesized_expression "((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) && (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) ))) )) (compound_statement "{\n            dVar25 = (double)pQVar15[lVar20];\n            dVar31 = (double)pQVar15[lVar20 + sVar14];\n            lVar16 = lVar20 + sVar14 * 2;\n            dVar32 = (double)pQVar15[lVar16];\n            dVar29 = (double)pQVar15[lVar16 + sVar14];\n            dVar28 = dVar23;\n            if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }\n            dVar33 = x - (double)x_00;\n            dVar26 = y - (double)local_168;\n            pPVar6 = source->channel_map;\n            lVar16 = pPVar6->offset;\n            lVar18 = pPVar6[1].offset;\n            lVar8 = pPVar6[2].offset;\n            sVar14 = source->number_channels;\n            if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }\n          }" { (expression_statement "dVar25 = (double)pQVar15[lVar20];" (assignment_expression "dVar25 = (double)pQVar15[lVar20]" identifier = (cast_expression "(double)pQVar15[lVar20]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar20]" identifier [ identifier ]))) ;) (expression_statement "dVar31 = (double)pQVar15[lVar20 + sVar14];" (assignment_expression "dVar31 = (double)pQVar15[lVar20 + sVar14]" identifier = (cast_expression "(double)pQVar15[lVar20 + sVar14]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar20 + sVar14]" identifier [ (binary_expression "lVar20 + sVar14" identifier + identifier) ]))) ;) (expression_statement "lVar16 = lVar20 + sVar14 * 2;" (assignment_expression "lVar16 = lVar20 + sVar14 * 2" identifier = (binary_expression "lVar20 + sVar14 * 2" identifier + (binary_expression "sVar14 * 2" identifier * number_literal))) ;) (expression_statement "dVar32 = (double)pQVar15[lVar16];" (assignment_expression "dVar32 = (double)pQVar15[lVar16]" identifier = (cast_expression "(double)pQVar15[lVar16]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar16]" identifier [ identifier ]))) ;) (expression_statement "dVar29 = (double)pQVar15[lVar16 + sVar14];" (assignment_expression "dVar29 = (double)pQVar15[lVar16 + sVar14]" identifier = (cast_expression "(double)pQVar15[lVar16 + sVar14]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar16 + sVar14]" identifier [ (binary_expression "lVar16 + sVar14" identifier + identifier) ]))) ;) (expression_statement "dVar28 = dVar23;" (assignment_expression "dVar28 = dVar23" identifier = identifier) ;) (if_statement "if ((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait) {\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }\n            else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }" if (parenthesized_expression "((pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar6[PVar3].traits & BlendPixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar6[PVar3].traits & BlendPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits & BlendPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) & identifier) )) == identifier) )) (compound_statement "{\n              local_160 = dVar23;\n              dVar30 = DAT_003f9608;\n              dVar24 = dVar23;\n            }" { (expression_statement "local_160 = dVar23;" (assignment_expression "local_160 = dVar23" identifier = identifier) ;) (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar24 = dVar23;" (assignment_expression "dVar24 = dVar23" identifier = identifier) ;) }) (else_clause "else {\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }" else (compound_statement "{\n              if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }\n              dVar30 = (double)fVar9 * DAT_003f9c60;\n            }" { (if_statement "if (pPVar6[4].traits == UndefinedPixelTrait) {\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }\n              else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }" if (parenthesized_expression "(pPVar6[4].traits == UndefinedPixelTrait)" ( (binary_expression "pPVar6[4].traits == UndefinedPixelTrait" (field_expression "pPVar6[4].traits" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\n                local_160 = dVar23;\n                dVar24 = DAT_003f9608;\n                fVar9 = _DAT_003fa400;\n              }" { (expression_statement "local_160 = dVar23;" (assignment_expression "local_160 = dVar23" identifier = identifier) ;) (expression_statement "dVar24 = DAT_003f9608;" (assignment_expression "dVar24 = DAT_003f9608" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) }) (else_clause "else {\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }" else (compound_statement "{\n                lVar16 = pPVar6[4].offset;\n                local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;\n                dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;\n                dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;\n                fVar9 = pQVar15[sVar14 * 3 + lVar16];\n              }" { (expression_statement "lVar16 = pPVar6[4].offset;" (assignment_expression "lVar16 = pPVar6[4].offset" identifier = (field_expression "pPVar6[4].offset" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60;" (assignment_expression "local_160 = (double)pQVar15[sVar14 + lVar16] * DAT_003f9c60" identifier = (binary_expression "(double)pQVar15[sVar14 + lVar16] * DAT_003f9c60" (cast_expression "(double)pQVar15[sVar14 + lVar16]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[sVar14 + lVar16]" identifier [ (binary_expression "sVar14 + lVar16" identifier + identifier) ])) * identifier)) ;) (expression_statement "dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60;" (assignment_expression "dVar28 = (double)pQVar15[lVar16] * DAT_003f9c60" identifier = (binary_expression "(double)pQVar15[lVar16] * DAT_003f9c60" (cast_expression "(double)pQVar15[lVar16]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[lVar16]" identifier [ identifier ])) * identifier)) ;) (expression_statement "dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60;" (assignment_expression "dVar24 = (double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60" identifier = (binary_expression "(double)pQVar15[sVar14 * 2 + lVar16] * DAT_003f9c60" (cast_expression "(double)pQVar15[sVar14 * 2 + lVar16]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar15[sVar14 * 2 + lVar16]" identifier [ (binary_expression "sVar14 * 2 + lVar16" (binary_expression "sVar14 * 2" identifier * number_literal) + identifier) ])) * identifier)) ;) (expression_statement "fVar9 = pQVar15[sVar14 * 3 + lVar16];" (assignment_expression "fVar9 = pQVar15[sVar14 * 3 + lVar16]" identifier = (subscript_expression "pQVar15[sVar14 * 3 + lVar16]" identifier [ (binary_expression "sVar14 * 3 + lVar16" (binary_expression "sVar14 * 3" identifier * number_literal) + identifier) ])) ;) }))) (expression_statement "dVar30 = (double)fVar9 * DAT_003f9c60;" (assignment_expression "dVar30 = (double)fVar9 * DAT_003f9c60" identifier = (binary_expression "(double)fVar9 * DAT_003f9c60" (cast_expression "(double)fVar9" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) }))) (expression_statement "dVar33 = x - (double)x_00;" (assignment_expression "dVar33 = x - (double)x_00" identifier = (binary_expression "x - (double)x_00" identifier - (cast_expression "(double)x_00" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar26 = y - (double)local_168;" (assignment_expression "dVar26 = y - (double)local_168" identifier = (binary_expression "y - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "pPVar6 = source->channel_map;" (assignment_expression "pPVar6 = source->channel_map" identifier = (field_expression "source->channel_map" identifier -> field_identifier)) ;) (expression_statement "lVar16 = pPVar6->offset;" (assignment_expression "lVar16 = pPVar6->offset" identifier = (field_expression "pPVar6->offset" identifier -> field_identifier)) ;) (expression_statement "lVar18 = pPVar6[1].offset;" (assignment_expression "lVar18 = pPVar6[1].offset" identifier = (field_expression "pPVar6[1].offset" (subscript_expression "pPVar6[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "lVar8 = pPVar6[2].offset;" (assignment_expression "lVar8 = pPVar6[2].offset" identifier = (field_expression "pPVar6[2].offset" (subscript_expression "pPVar6[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (if_statement "if ((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)) {\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }\n            else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }" if (parenthesized_expression "((double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11))" ( (binary_expression "(double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)" (cast_expression "(double)((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11)" ( (binary_expression "(ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])) & uVar11" (call_expression "(ulong)((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18]))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18]))" ( (binary_expression "(double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])" (cast_expression "(double)(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18])" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18])" ( (binary_expression "fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16] +\n                                         fVar2 * pQVar15[sVar14 + lVar18]" (binary_expression "fVar12 * pQVar15[sVar14 + lVar8] +\n                                         fVar10 * pQVar15[sVar14 + lVar16]" (binary_expression "fVar12 * pQVar15[sVar14 + lVar8]" identifier * (subscript_expression "pQVar15[sVar14 + lVar8]" identifier [ (binary_expression "sVar14 + lVar8" identifier + identifier) ])) + (binary_expression "fVar10 * pQVar15[sVar14 + lVar16]" identifier * (subscript_expression "pQVar15[sVar14 + lVar16]" identifier [ (binary_expression "sVar14 + lVar16" identifier + identifier) ]))) + (binary_expression "fVar2 * pQVar15[sVar14 + lVar18]" identifier * (subscript_expression "pQVar15[sVar14 + lVar18]" identifier [ (binary_expression "sVar14 + lVar18" identifier + identifier) ]))) ))) - (cast_expression "(double)(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18])" ( (binary_expression "fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16] +\n                                        fVar2 * pQVar15[sVar14 * 2 + lVar18]" (binary_expression "fVar12 * pQVar15[sVar14 * 2 + lVar8] +\n                                        fVar10 * pQVar15[sVar14 * 2 + lVar16]" (binary_expression "fVar12 * pQVar15[sVar14 * 2 + lVar8]" identifier * (subscript_expression "pQVar15[sVar14 * 2 + lVar8]" identifier [ (binary_expression "sVar14 * 2 + lVar8" (binary_expression "sVar14 * 2" identifier * number_literal) + identifier) ])) + (binary_expression "fVar10 * pQVar15[sVar14 * 2 + lVar16]" identifier * (subscript_expression "pQVar15[sVar14 * 2 + lVar16]" identifier [ (binary_expression "sVar14 * 2 + lVar16" (binary_expression "sVar14 * 2" identifier * number_literal) + identifier) ]))) + (binary_expression "fVar2 * pQVar15[sVar14 * 2 + lVar18]" identifier * (subscript_expression "pQVar15[sVar14 * 2 + lVar18]" identifier [ (binary_expression "sVar14 * 2 + lVar18" (binary_expression "sVar14 * 2" identifier * number_literal) + identifier) ]))) )))) ))) & identifier) ))) <= (cast_expression "(double)((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11)" ( (binary_expression "(ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])) & uVar11" (call_expression "(ulong)((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16]))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16]))" ( (binary_expression "(double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]) -\n                                (double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])" (cast_expression "(double)(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8])" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8])" ( (binary_expression "fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16] +\n                                         fVar12 * pQVar15[lVar8]" (binary_expression "fVar2 * pQVar15[lVar18] + fVar10 * pQVar15[lVar16]" (binary_expression "fVar2 * pQVar15[lVar18]" identifier * (subscript_expression "pQVar15[lVar18]" identifier [ identifier ])) + (binary_expression "fVar10 * pQVar15[lVar16]" identifier * (subscript_expression "pQVar15[lVar16]" identifier [ identifier ]))) + (binary_expression "fVar12 * pQVar15[lVar8]" identifier * (subscript_expression "pQVar15[lVar8]" identifier [ identifier ]))) ))) - (cast_expression "(double)(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16])" ( (binary_expression "fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18] +\n                                        fVar10 * pQVar15[sVar14 * 3 + lVar16]" (binary_expression "fVar12 * pQVar15[sVar14 * 3 + lVar8] +\n                                        fVar2 * pQVar15[sVar14 * 3 + lVar18]" (binary_expression "fVar12 * pQVar15[sVar14 * 3 + lVar8]" identifier * (subscript_expression "pQVar15[sVar14 * 3 + lVar8]" identifier [ (binary_expression "sVar14 * 3 + lVar8" (binary_expression "sVar14 * 3" identifier * number_literal) + identifier) ])) + (binary_expression "fVar2 * pQVar15[sVar14 * 3 + lVar18]" identifier * (subscript_expression "pQVar15[sVar14 * 3 + lVar18]" identifier [ (binary_expression "sVar14 * 3 + lVar18" (binary_expression "sVar14 * 3" identifier * number_literal) + identifier) ]))) + (binary_expression "fVar10 * pQVar15[sVar14 * 3 + lVar16]" identifier * (subscript_expression "pQVar15[sVar14 * 3 + lVar16]" identifier [ (binary_expression "sVar14 * 3 + lVar16" (binary_expression "sVar14 * 3" identifier * number_literal) + identifier) ]))) )))) ))) & identifier) )))) )) (compound_statement "{\n              dVar34 = DAT_003f9608 - dVar26;\n              if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }\n            }" { (expression_statement "dVar34 = DAT_003f9608 - dVar26;" (assignment_expression "dVar34 = DAT_003f9608 - dVar26" identifier = (binary_expression "DAT_003f9608 - dVar26" identifier - identifier)) ;) (if_statement "if (dVar34 < dVar33) {\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }\n              else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }" if (parenthesized_expression "(dVar34 < dVar33)" ( (binary_expression "dVar34 < dVar33" identifier < identifier) )) (compound_statement "{\n                dVar33 = DAT_003f9608 - dVar33;\n                dVar25 = (DAT_003f9608 - dVar33) - dVar34;\n                dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }\n              }" { (expression_statement "dVar33 = DAT_003f9608 - dVar33;" (assignment_expression "dVar33 = DAT_003f9608 - dVar33" identifier = (binary_expression "DAT_003f9608 - dVar33" identifier - identifier)) ;) (expression_statement "dVar25 = (DAT_003f9608 - dVar33) - dVar34;" (assignment_expression "dVar25 = (DAT_003f9608 - dVar33) - dVar34" identifier = (binary_expression "(DAT_003f9608 - dVar33) - dVar34" (parenthesized_expression "(DAT_003f9608 - dVar33)" ( (binary_expression "DAT_003f9608 - dVar33" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34;" (assignment_expression "dVar24 = dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34" identifier = (binary_expression "dVar30 * dVar25 + dVar24 * dVar33 + local_160 * dVar34" (binary_expression "dVar30 * dVar25 + dVar24 * dVar33" (binary_expression "dVar30 * dVar25" identifier * identifier) + (binary_expression "dVar24 * dVar33" identifier * identifier)) + (binary_expression "local_160 * dVar34" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }" if (parenthesized_expression "(0.0 <= dVar24)" ( (binary_expression "0.0 <= dVar24" number_literal <= identifier) )) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }" if (parenthesized_expression "(dVar28 * dVar24 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar24 < DAT_003f9600" (binary_expression "dVar28 * dVar24" identifier * identifier) < identifier) )) (compound_statement "{\n                  dVar24 = dVar28 / DAT_003f9600;\n                }" { (expression_statement "dVar24 = dVar28 / DAT_003f9600;" (assignment_expression "dVar24 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }" else (compound_statement "{\n                  dVar24 = DAT_003f9608 / dVar24;\n                }" { (expression_statement "dVar24 = DAT_003f9608 / dVar24;" (assignment_expression "dVar24 = DAT_003f9608 / dVar24" identifier = (binary_expression "DAT_003f9608 / dVar24" identifier / identifier)) ;) }))) (if_statement "if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }" if (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) (compound_statement "{\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);\n                }" { (expression_statement "pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24);" (assignment_expression "pixel[destination->channel_map[PVar3].offset] =\n                       (float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24)" (subscript_expression "pixel[destination->channel_map[PVar3].offset]" identifier [ (field_expression "destination->channel_map[PVar3].offset" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) ]) = (cast_expression "(float)((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24)" ( (binary_expression "(dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33) * dVar24" (parenthesized_expression "(dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33)" ( (binary_expression "dVar25 * dVar29 + dVar31 * dVar34 + dVar32 * dVar33" (binary_expression "dVar25 * dVar29 + dVar31 * dVar34" (binary_expression "dVar25 * dVar29" identifier * identifier) + (binary_expression "dVar31 * dVar34" identifier * identifier)) + (binary_expression "dVar32 * dVar33" identifier * identifier)) )) * identifier) )))) ;) })) }) (else_clause "else {\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }" else (compound_statement "{\n                dVar29 = (DAT_003f9608 - dVar33) - dVar26;\n                dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }\n                if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }\n              }" { (expression_statement "dVar29 = (DAT_003f9608 - dVar33) - dVar26;" (assignment_expression "dVar29 = (DAT_003f9608 - dVar33) - dVar26" identifier = (binary_expression "(DAT_003f9608 - dVar33) - dVar26" (parenthesized_expression "(DAT_003f9608 - dVar33)" ( (binary_expression "DAT_003f9608 - dVar33" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33;" (assignment_expression "dVar24 = dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33" identifier = (binary_expression "dVar28 * dVar29 + dVar24 * dVar26 + local_160 * dVar33" (binary_expression "dVar28 * dVar29 + dVar24 * dVar26" (binary_expression "dVar28 * dVar29" identifier * identifier) + (binary_expression "dVar24 * dVar26" identifier * identifier)) + (binary_expression "local_160 * dVar33" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar24) {\n                  dVar28 = DAT_003f9608;\n                }" if (parenthesized_expression "(0.0 <= dVar24)" ( (binary_expression "0.0 <= dVar24" number_literal <= identifier) )) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar24 < DAT_003f9600) {\n                  dVar24 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }" if (parenthesized_expression "(dVar28 * dVar24 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar24 < DAT_003f9600" (binary_expression "dVar28 * dVar24" identifier * identifier) < identifier) )) (compound_statement "{\n                  dVar24 = dVar28 / DAT_003f9600;\n                }" { (expression_statement "dVar24 = dVar28 / DAT_003f9600;" (assignment_expression "dVar24 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                  dVar24 = DAT_003f9608 / dVar24;\n                }" else (compound_statement "{\n                  dVar24 = DAT_003f9608 / dVar24;\n                }" { (expression_statement "dVar24 = DAT_003f9608 / dVar24;" (assignment_expression "dVar24 = DAT_003f9608 / dVar24" identifier = (binary_expression "DAT_003f9608 / dVar24" identifier / identifier)) ;) }))) (if_statement "if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }" if (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) (compound_statement "{\n                  pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));\n                }" { (expression_statement "pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31));" (assignment_expression "pixel[destination->channel_map[PVar3].offset] =\n                       (float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31))" (subscript_expression "pixel[destination->channel_map[PVar3].offset]" identifier [ (field_expression "destination->channel_map[PVar3].offset" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) ]) = (cast_expression "(float)(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31))" ( (binary_expression "dVar24 * (dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31)" identifier * (parenthesized_expression "(dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31)" ( (binary_expression "dVar25 * dVar29 + dVar26 * dVar32 + dVar33 * dVar31" (binary_expression "dVar25 * dVar29 + dVar26 * dVar32" (binary_expression "dVar25 * dVar29" identifier * identifier) + (binary_expression "dVar26 * dVar32" identifier * identifier)) + (binary_expression "dVar33 * dVar31" identifier * identifier)) ))) )))) ;) })) }))) }) (else_clause "else if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }" else (if_statement "if (dVar26 < dVar33) {\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }\n            else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }" if (parenthesized_expression "(dVar26 < dVar33)" ( (binary_expression "dVar26 < dVar33" identifier < identifier) )) (compound_statement "{\n              dVar33 = DAT_003f9608 - dVar33;\n              dVar32 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }\n            }" { (expression_statement "dVar33 = DAT_003f9608 - dVar33;" (assignment_expression "dVar33 = DAT_003f9608 - dVar33" identifier = (binary_expression "DAT_003f9608 - dVar33" identifier - identifier)) ;) (expression_statement "dVar32 = (DAT_003f9608 - dVar33) - dVar26;" (assignment_expression "dVar32 = (DAT_003f9608 - dVar33) - dVar26" identifier = (binary_expression "(DAT_003f9608 - dVar33) - dVar26" (parenthesized_expression "(DAT_003f9608 - dVar33)" ( (binary_expression "DAT_003f9608 - dVar33" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32;" (assignment_expression "dVar24 = dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32" identifier = (binary_expression "dVar30 * dVar26 + dVar28 * dVar33 + local_160 * dVar32" (binary_expression "dVar30 * dVar26 + dVar28 * dVar33" (binary_expression "dVar30 * dVar26" identifier * identifier) + (binary_expression "dVar28 * dVar33" identifier * identifier)) + (binary_expression "local_160 * dVar32" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar24)" ( (binary_expression "0.0 <= dVar24" number_literal <= identifier) )) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }" if (parenthesized_expression "(dVar28 * dVar24 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar24 < DAT_003f9600" (binary_expression "dVar28 * dVar24" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar24 = dVar28 / DAT_003f9600;\n              }" { (expression_statement "dVar24 = dVar28 / DAT_003f9600;" (assignment_expression "dVar24 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }" else (compound_statement "{\n                dVar24 = DAT_003f9608 / dVar24;\n              }" { (expression_statement "dVar24 = DAT_003f9608 / dVar24;" (assignment_expression "dVar24 = DAT_003f9608 / dVar24" identifier = (binary_expression "DAT_003f9608 / dVar24" identifier / identifier)) ;) }))) (if_statement "if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }" if (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) (compound_statement "{\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);\n              }" { (expression_statement "pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24);" (assignment_expression "pixel[destination->channel_map[PVar3].offset] =\n                     (float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24)" (subscript_expression "pixel[destination->channel_map[PVar3].offset]" identifier [ (field_expression "destination->channel_map[PVar3].offset" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) ]) = (cast_expression "(float)((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24)" ( (binary_expression "(dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29) * dVar24" (parenthesized_expression "(dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29)" ( (binary_expression "dVar32 * dVar31 + dVar33 * dVar25 + dVar26 * dVar29" (binary_expression "dVar32 * dVar31 + dVar33 * dVar25" (binary_expression "dVar32 * dVar31" identifier * identifier) + (binary_expression "dVar33 * dVar25" identifier * identifier)) + (binary_expression "dVar26 * dVar29" identifier * identifier)) )) * identifier) )))) ;) })) }) (else_clause "else {\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }" else (compound_statement "{\n              dVar26 = DAT_003f9608 - dVar26;\n              dVar31 = (DAT_003f9608 - dVar33) - dVar26;\n              dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }\n              if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }\n            }" { (expression_statement "dVar26 = DAT_003f9608 - dVar26;" (assignment_expression "dVar26 = DAT_003f9608 - dVar26" identifier = (binary_expression "DAT_003f9608 - dVar26" identifier - identifier)) ;) (expression_statement "dVar31 = (DAT_003f9608 - dVar33) - dVar26;" (assignment_expression "dVar31 = (DAT_003f9608 - dVar33) - dVar26" identifier = (binary_expression "(DAT_003f9608 - dVar33) - dVar26" (parenthesized_expression "(DAT_003f9608 - dVar33)" ( (binary_expression "DAT_003f9608 - dVar33" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31;" (assignment_expression "dVar24 = dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31" identifier = (binary_expression "dVar30 * dVar33 + dVar28 * dVar26 + dVar24 * dVar31" (binary_expression "dVar30 * dVar33 + dVar28 * dVar26" (binary_expression "dVar30 * dVar33" identifier * identifier) + (binary_expression "dVar28 * dVar26" identifier * identifier)) + (binary_expression "dVar24 * dVar31" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar24) {\n                dVar28 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar24)" ( (binary_expression "0.0 <= dVar24" number_literal <= identifier) )) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar24 < DAT_003f9600) {\n                dVar24 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }" if (parenthesized_expression "(dVar28 * dVar24 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar24 < DAT_003f9600" (binary_expression "dVar28 * dVar24" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar24 = dVar28 / DAT_003f9600;\n              }" { (expression_statement "dVar24 = dVar28 / DAT_003f9600;" (assignment_expression "dVar24 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar24 = DAT_003f9608 / dVar24;\n              }" else (compound_statement "{\n                dVar24 = DAT_003f9608 / dVar24;\n              }" { (expression_statement "dVar24 = DAT_003f9608 / dVar24;" (assignment_expression "dVar24 = DAT_003f9608 / dVar24" identifier = (binary_expression "DAT_003f9608 / dVar24" identifier / identifier)) ;) }))) (if_statement "if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }" if (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) (compound_statement "{\n                pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));\n              }" { (expression_statement "pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29));" (assignment_expression "pixel[destination->channel_map[PVar3].offset] =\n                     (float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29))" (subscript_expression "pixel[destination->channel_map[PVar3].offset]" identifier [ (field_expression "destination->channel_map[PVar3].offset" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) ]) = (cast_expression "(float)(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29))" ( (binary_expression "dVar24 * (dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29)" identifier * (parenthesized_expression "(dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29)" ( (binary_expression "dVar31 * dVar32 + dVar25 * dVar26 + dVar33 * dVar29" (binary_expression "dVar31 * dVar32 + dVar25 * dVar26" (binary_expression "dVar31 * dVar32" identifier * identifier) + (binary_expression "dVar25 * dVar26" identifier * identifier)) + (binary_expression "dVar33 * dVar29" identifier * identifier)) ))) )))) ;) })) }))))) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(lVar20 < (long)sVar14)" ( (binary_expression "lVar20 < (long)sVar14" identifier < (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case NearestInterpolatePixel:\n    if (x < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }\n    dVar23 = floor(local_178 + DAT_003f9c28);\n    if (y < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }\n    break;" case identifier : (if_statement "if (x < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }" if (parenthesized_expression "(x < DAT_004294e8)" ( (binary_expression "x < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n      local_178 = DAT_004294e8;\n    }" { (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }" else (if_statement "if (DAT_004294f0 < x) {\n      local_178 = DAT_004294f0;\n    }" if (parenthesized_expression "(DAT_004294f0 < x)" ( (binary_expression "DAT_004294f0 < x" identifier < identifier) )) (compound_statement "{\n      local_178 = DAT_004294f0;\n    }" { (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "dVar23 = floor(local_178 + DAT_003f9c28);" (assignment_expression "dVar23 = floor(local_178 + DAT_003f9c28)" identifier = (call_expression "floor(local_178 + DAT_003f9c28)" identifier (argument_list "(local_178 + DAT_003f9c28)" ( (binary_expression "local_178 + DAT_003f9c28" identifier + identifier) )))) ;) (if_statement "if (y < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }" if (parenthesized_expression "(y < DAT_004294e8)" ( (binary_expression "y < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n      local_170 = DAT_004294e8;\n    }" { (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }" else (if_statement "if (DAT_004294f0 < y) {\n      local_170 = DAT_004294f0;\n    }" if (parenthesized_expression "(DAT_004294f0 < y)" ( (binary_expression "DAT_004294f0 < y" identifier < identifier) )) (compound_statement "{\n      local_170 = DAT_004294f0;\n    }" { (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "dVar28 = floor(local_170 + DAT_003f9c28);" (assignment_expression "dVar28 = floor(local_170 + DAT_003f9c28)" identifier = (call_expression "floor(local_170 + DAT_003f9c28)" identifier (argument_list "(local_170 + DAT_003f9c28)" ( (binary_expression "local_170 + DAT_003f9c28" identifier + identifier) )))) ;) (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,(long)dVar23,(long)dVar28,1,1,exception)" identifier (argument_list "(source_view,(long)dVar23,(long)dVar28,1,1,exception)" ( identifier , (cast_expression "(long)dVar23" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) , (cast_expression "(long)dVar28" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) , number_literal , number_literal , identifier )))) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }\n    }" { (if_statement "if ((long)source->number_channels < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)source->number_channels < 1)" ( (binary_expression "(long)source->number_channels < 1" (cast_expression "(long)source->number_channels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "source->number_channels" identifier -> field_identifier)) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        } while (lVar20 < (long)source->number_channels);" do (compound_statement "{\n          PVar3 = source->channel_map[lVar20].channel;\n          pPVar6 = destination->channel_map;\n          if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }\n          lVar20 = lVar20 + 1;\n        }" { (expression_statement "PVar3 = source->channel_map[lVar20].channel;" (assignment_expression "PVar3 = source->channel_map[lVar20].channel" identifier = (field_expression "source->channel_map[lVar20].channel" (subscript_expression "source->channel_map[lVar20]" (field_expression "source->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "pPVar6 = destination->channel_map;" (assignment_expression "pPVar6 = destination->channel_map" identifier = (field_expression "destination->channel_map" identifier -> field_identifier)) ;) (if_statement "if (((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }" if (parenthesized_expression "(((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "((pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait) &&\n              (source->channel_map[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) )) && (parenthesized_expression "(source->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "source->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "source->channel_map[PVar3].traits" (subscript_expression "source->channel_map[PVar3]" (field_expression "source->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) ))) )) && (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) ))) )) (compound_statement "{\n            pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];\n          }" { (expression_statement "pixel[pPVar6[PVar3].offset] = pQVar15[lVar20];" (assignment_expression "pixel[pPVar6[PVar3].offset] = pQVar15[lVar20]" (subscript_expression "pixel[pPVar6[PVar3].offset]" identifier [ (field_expression "pPVar6[PVar3].offset" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) ]) = (subscript_expression "pQVar15[lVar20]" identifier [ identifier ])) ;) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar20 < (long)source->number_channels)" ( (binary_expression "lVar20 < (long)source->number_channels" identifier < (cast_expression "(long)source->number_channels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "source->number_channels" identifier -> field_identifier))) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case SplineInterpolatePixel:\n    pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);\n    dVar28 = DAT_0041d760;\n    fVar10 = _DAT_003fa400;\n    dVar23 = DAT_003f9608;\n    MVar13 = MagickFalse;\n    if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" case identifier : (expression_statement "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception);" (assignment_expression "pQVar15 = GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(source_view,x_00 + -1,local_168 + -1,4,4,exception)" identifier (argument_list "(source_view,x_00 + -1,local_168 + -1,4,4,exception)" ( identifier , (binary_expression "x_00 + -1" identifier + number_literal) , (binary_expression "local_168 + -1" identifier + number_literal) , number_literal , number_literal , identifier )))) ;) (expression_statement "dVar28 = DAT_0041d760;" (assignment_expression "dVar28 = DAT_0041d760" identifier = identifier) ;) (expression_statement "fVar10 = _DAT_003fa400;" (assignment_expression "fVar10 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar23 = DAT_003f9608;" (assignment_expression "dVar23 = DAT_003f9608" identifier = identifier) ;) (expression_statement "MVar13 = MagickFalse;" (assignment_expression "MVar13 = MagickFalse" identifier = identifier) ;) (if_statement "if (pQVar15 != (Quantum *)0x0) {\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" if (parenthesized_expression "(pQVar15 != (Quantum *)0x0)" ( (binary_expression "pQVar15 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar14 = source->number_channels;\n      if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }\n    }" { (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (if_statement "if ((long)sVar14 < 1) {\n        MVar13 = MagickTrue;\n      }\n      else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" if (parenthesized_expression "((long)sVar14 < 1)" ( (binary_expression "(long)sVar14 < 1" (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        MVar13 = MagickTrue;\n      }" { (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }) (else_clause "else {\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        pQVar21 = pQVar15;\n        do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);\n        MVar13 = MagickTrue;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pQVar21 = pQVar15;" (assignment_expression "pQVar21 = pQVar15" identifier = identifier) ;) (do_statement "do {\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        } while (lVar20 < (long)sVar14);" do (compound_statement "{\n          pPVar6 = source->channel_map;\n          PVar3 = pPVar6[lVar20].channel;\n          if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }\n          lVar20 = lVar20 + 1;\n          sVar14 = source->number_channels;\n          pQVar21 = pQVar21 + 1;\n        }" { (expression_statement "pPVar6 = source->channel_map;" (assignment_expression "pPVar6 = source->channel_map" identifier = (field_expression "source->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar3 = pPVar6[lVar20].channel;" (assignment_expression "PVar3 = pPVar6[lVar20].channel" identifier = (field_expression "pPVar6[lVar20].channel" (subscript_expression "pPVar6[lVar20]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if ((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)) {\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }" if (parenthesized_expression "((destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait))" ( (binary_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait) &&\n             (pPVar6[PVar3].traits != UndefinedPixelTrait)" (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) && (parenthesized_expression "(pPVar6[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar6[PVar3].traits != UndefinedPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) != identifier) ))) )) (compound_statement "{\n            PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;\n            if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            dVar31 = x - (double)x_00;\n            dVar29 = dVar23 - dVar31;\n            dVar32 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar25 = dVar29 * dVar28 * dVar29 * dVar29;\n            dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);\n            dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);\n            dVar31 = y - (double)local_168;\n            dVar33 = dVar23 - dVar31;\n            dVar26 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar29 = dVar33 * dVar28 * dVar33 * dVar33;\n            dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);\n            dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);\n            dVar31 = DAT_003f9608;\n            if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }\n          }" { (expression_statement "PVar22 = pPVar6[PVar3].traits & BlendPixelTrait;" (assignment_expression "PVar22 = pPVar6[PVar3].traits & BlendPixelTrait" identifier = (binary_expression "pPVar6[PVar3].traits & BlendPixelTrait" (field_expression "pPVar6[PVar3].traits" (subscript_expression "pPVar6[PVar3]" identifier [ identifier ]) . field_identifier) & identifier)) ;) (if_statement "if (PVar22 == UndefinedPixelTrait) {\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }\n            else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }" if (parenthesized_expression "(PVar22 == UndefinedPixelTrait)" ( (binary_expression "PVar22 == UndefinedPixelTrait" identifier == identifier) )) (compound_statement "{\n              lVar16 = 0;\n              pfVar19 = pQVar21;\n              do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);\n            }" { (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pQVar21;" (assignment_expression "pfVar19 = pQVar21" identifier = identifier) ;) (do_statement "do {\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              } while (lVar16 != 0x10);" do (compound_statement "{\n                alpha[lVar16] = DAT_003f9608;\n                pixels[lVar16] = (double)*pfVar19;\n                lVar16 = lVar16 + 1;\n                pfVar19 = pfVar19 + sVar14;\n              }" { (expression_statement "alpha[lVar16] = DAT_003f9608;" (assignment_expression "alpha[lVar16] = DAT_003f9608" (subscript_expression "alpha[lVar16]" identifier [ identifier ]) = identifier) ;) (expression_statement "pixels[lVar16] = (double)*pfVar19;" (assignment_expression "pixels[lVar16] = (double)*pfVar19" (subscript_expression "pixels[lVar16]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + sVar14;" (assignment_expression "pfVar19 = pfVar19 + sVar14" identifier = (binary_expression "pfVar19 + sVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar16 != 0x10)" ( (binary_expression "lVar16 != 0x10" identifier != number_literal) )) ;) }) (else_clause "else {\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }" else (compound_statement "{\n              PVar4 = pPVar6[4].traits;\n              lVar18 = 0;\n              lVar16 = 0;\n              do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);\n            }" { (expression_statement "PVar4 = pPVar6[4].traits;" (assignment_expression "PVar4 = pPVar6[4].traits" identifier = (field_expression "pPVar6[4].traits" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" identifier = number_literal) ;) (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              } while (lVar16 != 0x10);" do (compound_statement "{\n                fVar2 = fVar10;\n                if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }\n                alpha[lVar16] = (double)fVar2 * DAT_003f9c60;\n                pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];\n                lVar16 = lVar16 + 1;\n                lVar18 = lVar18 + sVar14;\n              }" { (expression_statement "fVar2 = fVar10;" (assignment_expression "fVar2 = fVar10" identifier = identifier) ;) (if_statement "if (PVar4 != UndefinedPixelTrait) {\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }" if (parenthesized_expression "(PVar4 != UndefinedPixelTrait)" ( (binary_expression "PVar4 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n                  fVar2 = pQVar15[lVar18 + pPVar6[4].offset];\n                }" { (expression_statement "fVar2 = pQVar15[lVar18 + pPVar6[4].offset];" (assignment_expression "fVar2 = pQVar15[lVar18 + pPVar6[4].offset]" identifier = (subscript_expression "pQVar15[lVar18 + pPVar6[4].offset]" identifier [ (binary_expression "lVar18 + pPVar6[4].offset" identifier + (field_expression "pPVar6[4].offset" (subscript_expression "pPVar6[4]" identifier [ number_literal ]) . field_identifier)) ])) ;) })) (expression_statement "alpha[lVar16] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "alpha[lVar16] = (double)fVar2 * DAT_003f9c60" (subscript_expression "alpha[lVar16]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (expression_statement "pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18];" (assignment_expression "pixels[lVar16] = (double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18]" (subscript_expression "pixels[lVar16]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pQVar21[lVar18]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pQVar21[lVar18]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pQVar21[lVar18]" identifier [ identifier ])))) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "lVar18 = lVar18 + sVar14;" (assignment_expression "lVar18 = lVar18 + sVar14" identifier = (binary_expression "lVar18 + sVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar16 != 0x10)" ( (binary_expression "lVar16 != 0x10" identifier != number_literal) )) ;) }))) (expression_statement "dVar31 = x - (double)x_00;" (assignment_expression "dVar31 = x - (double)x_00" identifier = (binary_expression "x - (double)x_00" identifier - (cast_expression "(double)x_00" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar29 = dVar23 - dVar31;" (assignment_expression "dVar29 = dVar23 - dVar31" identifier = (binary_expression "dVar23 - dVar31" identifier - identifier)) ;) (expression_statement "dVar32 = dVar31 * dVar28 * dVar31 * dVar31;" (assignment_expression "dVar32 = dVar31 * dVar28 * dVar31 * dVar31" identifier = (binary_expression "dVar31 * dVar28 * dVar31 * dVar31" (binary_expression "dVar31 * dVar28 * dVar31" (binary_expression "dVar31 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar25 = dVar29 * dVar28 * dVar29 * dVar29;" (assignment_expression "dVar25 = dVar29 * dVar28 * dVar29 * dVar29" identifier = (binary_expression "dVar29 * dVar28 * dVar29 * dVar29" (binary_expression "dVar29 * dVar28 * dVar29" (binary_expression "dVar29 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25);" (assignment_expression "dVar24 = (dVar29 - dVar25) + (dVar32 - dVar25)" identifier = (binary_expression "(dVar29 - dVar25) + (dVar32 - dVar25)" (parenthesized_expression "(dVar29 - dVar25)" ( (binary_expression "dVar29 - dVar25" identifier - identifier) )) + (parenthesized_expression "(dVar32 - dVar25)" ( (binary_expression "dVar32 - dVar25" identifier - identifier) )))) ;) (expression_statement "dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25);" (assignment_expression "dVar30 = (dVar31 - dVar32) - (dVar32 - dVar25)" identifier = (binary_expression "(dVar31 - dVar32) - (dVar32 - dVar25)" (parenthesized_expression "(dVar31 - dVar32)" ( (binary_expression "dVar31 - dVar32" identifier - identifier) )) - (parenthesized_expression "(dVar32 - dVar25)" ( (binary_expression "dVar32 - dVar25" identifier - identifier) )))) ;) (expression_statement "dVar31 = y - (double)local_168;" (assignment_expression "dVar31 = y - (double)local_168" identifier = (binary_expression "y - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar33 = dVar23 - dVar31;" (assignment_expression "dVar33 = dVar23 - dVar31" identifier = (binary_expression "dVar23 - dVar31" identifier - identifier)) ;) (expression_statement "dVar26 = dVar31 * dVar28 * dVar31 * dVar31;" (assignment_expression "dVar26 = dVar31 * dVar28 * dVar31 * dVar31" identifier = (binary_expression "dVar31 * dVar28 * dVar31 * dVar31" (binary_expression "dVar31 * dVar28 * dVar31" (binary_expression "dVar31 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar29 = dVar33 * dVar28 * dVar33 * dVar33;" (assignment_expression "dVar29 = dVar33 * dVar28 * dVar33 * dVar33" identifier = (binary_expression "dVar33 * dVar28 * dVar33 * dVar33" (binary_expression "dVar33 * dVar28 * dVar33" (binary_expression "dVar33 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29);" (assignment_expression "dVar34 = (dVar33 - dVar29) + (dVar26 - dVar29)" identifier = (binary_expression "(dVar33 - dVar29) + (dVar26 - dVar29)" (parenthesized_expression "(dVar33 - dVar29)" ( (binary_expression "dVar33 - dVar29" identifier - identifier) )) + (parenthesized_expression "(dVar26 - dVar29)" ( (binary_expression "dVar26 - dVar29" identifier - identifier) )))) ;) (expression_statement "dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29);" (assignment_expression "dVar33 = (dVar31 - dVar26) - (dVar26 - dVar29)" identifier = (binary_expression "(dVar31 - dVar26) - (dVar26 - dVar29)" (parenthesized_expression "(dVar31 - dVar26)" ( (binary_expression "dVar31 - dVar26" identifier - identifier) )) - (parenthesized_expression "(dVar26 - dVar29)" ( (binary_expression "dVar26 - dVar29" identifier - identifier) )))) ;) (expression_statement "dVar31 = DAT_003f9608;" (assignment_expression "dVar31 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (PVar22 == UndefinedPixelTrait) {\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" if (parenthesized_expression "(PVar22 == UndefinedPixelTrait)" ( (binary_expression "PVar22 == UndefinedPixelTrait" identifier == identifier) )) (compound_statement "{\n              dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;\n              dVar27 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }\n              if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" { (expression_statement "dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26;" (assignment_expression "dVar31 = (dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26" identifier = (binary_expression "(dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33 +\n                       (dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26" (binary_expression "(dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29 +\n                       (dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33" (binary_expression "(dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34 +\n                       (dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29" (binary_expression "(dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]) * dVar34" (parenthesized_expression "(dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7])" ( (binary_expression "dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5] +\n                       dVar32 * alpha[7]" (binary_expression "dVar30 * alpha[6] + dVar25 * alpha[4] + dVar24 * alpha[5]" (binary_expression "dVar30 * alpha[6] + dVar25 * alpha[4]" (binary_expression "dVar30 * alpha[6]" identifier * (subscript_expression "alpha[6]" identifier [ number_literal ])) + (binary_expression "dVar25 * alpha[4]" identifier * (subscript_expression "alpha[4]" identifier [ number_literal ]))) + (binary_expression "dVar24 * alpha[5]" identifier * (subscript_expression "alpha[5]" identifier [ number_literal ]))) + (binary_expression "dVar32 * alpha[7]" identifier * (subscript_expression "alpha[7]" identifier [ number_literal ]))) )) * identifier) + (binary_expression "(dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]) * dVar29" (parenthesized_expression "(dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2])" ( (binary_expression "dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1] + dVar30 * alpha[2]" (binary_expression "dVar32 * alpha[3] +\n                       dVar25 * alpha[0] + dVar24 * alpha[1]" (binary_expression "dVar32 * alpha[3] +\n                       dVar25 * alpha[0]" (binary_expression "dVar32 * alpha[3]" identifier * (subscript_expression "alpha[3]" identifier [ number_literal ])) + (binary_expression "dVar25 * alpha[0]" identifier * (subscript_expression "alpha[0]" identifier [ number_literal ]))) + (binary_expression "dVar24 * alpha[1]" identifier * (subscript_expression "alpha[1]" identifier [ number_literal ]))) + (binary_expression "dVar30 * alpha[2]" identifier * (subscript_expression "alpha[2]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]) * dVar33" (parenthesized_expression "(dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb])" ( (binary_expression "dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9] +\n                       dVar32 * alpha[0xb]" (binary_expression "dVar30 * alpha[10] + dVar25 * alpha[8] + dVar24 * alpha[9]" (binary_expression "dVar30 * alpha[10] + dVar25 * alpha[8]" (binary_expression "dVar30 * alpha[10]" identifier * (subscript_expression "alpha[10]" identifier [ number_literal ])) + (binary_expression "dVar25 * alpha[8]" identifier * (subscript_expression "alpha[8]" identifier [ number_literal ]))) + (binary_expression "dVar24 * alpha[9]" identifier * (subscript_expression "alpha[9]" identifier [ number_literal ]))) + (binary_expression "dVar32 * alpha[0xb]" identifier * (subscript_expression "alpha[0xb]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]) * dVar26" (parenthesized_expression "(dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf])" ( (binary_expression "dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd] +\n                       dVar32 * alpha[0xf]" (binary_expression "dVar30 * alpha[0xe] + dVar25 * alpha[0xc] + dVar24 * alpha[0xd]" (binary_expression "dVar30 * alpha[0xe] + dVar25 * alpha[0xc]" (binary_expression "dVar30 * alpha[0xe]" identifier * (subscript_expression "alpha[0xe]" identifier [ number_literal ])) + (binary_expression "dVar25 * alpha[0xc]" identifier * (subscript_expression "alpha[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar24 * alpha[0xd]" identifier * (subscript_expression "alpha[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar32 * alpha[0xf]" identifier * (subscript_expression "alpha[0xf]" identifier [ number_literal ]))) )) * identifier))) ;) (expression_statement "dVar27 = DAT_003f9c68;" (assignment_expression "dVar27 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar31) {\n                dVar27 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar31)" ( (binary_expression "0.0 <= dVar31" number_literal <= identifier) )) (compound_statement "{\n                dVar27 = DAT_003f9608;\n              }" { (expression_statement "dVar27 = DAT_003f9608;" (assignment_expression "dVar27 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar31 * dVar27 < DAT_003f9600) {\n                dVar31 = dVar27 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" if (parenthesized_expression "(dVar31 * dVar27 < DAT_003f9600)" ( (binary_expression "dVar31 * dVar27 < DAT_003f9600" (binary_expression "dVar31 * dVar27" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar31 = dVar27 / DAT_003f9600;\n              }" { (expression_statement "dVar31 = dVar27 / DAT_003f9600;" (assignment_expression "dVar31 = dVar27 / DAT_003f9600" identifier = (binary_expression "dVar27 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" else (compound_statement "{\n                dVar31 = DAT_003f9608 / dVar31;\n              }" { (expression_statement "dVar31 = DAT_003f9608 / dVar31;" (assignment_expression "dVar31 = DAT_003f9608 / dVar31" identifier = (binary_expression "DAT_003f9608 / dVar31" identifier / identifier)) ;) }))) })) (if_statement "if (destination->channel_map[PVar3].traits != UndefinedPixelTrait) {\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }" if (parenthesized_expression "(destination->channel_map[PVar3].traits != UndefinedPixelTrait)" ( (binary_expression "destination->channel_map[PVar3].traits != UndefinedPixelTrait" (field_expression "destination->channel_map[PVar3].traits" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) != identifier) )) (compound_statement "{\n              pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);\n            }" { (expression_statement "pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31);" (assignment_expression "pixel[destination->channel_map[PVar3].offset] =\n                   (float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31)" (subscript_expression "pixel[destination->channel_map[PVar3].offset]" identifier [ (field_expression "destination->channel_map[PVar3].offset" (subscript_expression "destination->channel_map[PVar3]" (field_expression "destination->channel_map" identifier -> field_identifier) [ identifier ]) . field_identifier) ]) = (cast_expression "(float)((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31)" ( (binary_expression "(dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26) * dVar31" (parenthesized_expression "(dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26)" ( (binary_expression "dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])\n                           + (dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26" (binary_expression "dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]) +\n                            dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])" (binary_expression "dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]) +\n                            dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3])" (binary_expression "dVar34 * (dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7])" identifier * (parenthesized_expression "(dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7])" ( (binary_expression "dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5] +\n                                     dVar32 * pixels[7]" (binary_expression "dVar30 * pixels[6] + dVar25 * pixels[4] + dVar24 * pixels[5]" (binary_expression "dVar30 * pixels[6] + dVar25 * pixels[4]" (binary_expression "dVar30 * pixels[6]" identifier * (subscript_expression "pixels[6]" identifier [ number_literal ])) + (binary_expression "dVar25 * pixels[4]" identifier * (subscript_expression "pixels[4]" identifier [ number_literal ]))) + (binary_expression "dVar24 * pixels[5]" identifier * (subscript_expression "pixels[5]" identifier [ number_literal ]))) + (binary_expression "dVar32 * pixels[7]" identifier * (subscript_expression "pixels[7]" identifier [ number_literal ]))) ))) + (binary_expression "dVar29 * (dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3])" identifier * (parenthesized_expression "(dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3])" ( (binary_expression "dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1] +\n                                     dVar32 * pixels[3]" (binary_expression "dVar30 * pixels[2] + dVar25 * pixels[0] + dVar24 * pixels[1]" (binary_expression "dVar30 * pixels[2] + dVar25 * pixels[0]" (binary_expression "dVar30 * pixels[2]" identifier * (subscript_expression "pixels[2]" identifier [ number_literal ])) + (binary_expression "dVar25 * pixels[0]" identifier * (subscript_expression "pixels[0]" identifier [ number_literal ]))) + (binary_expression "dVar24 * pixels[1]" identifier * (subscript_expression "pixels[1]" identifier [ number_literal ]))) + (binary_expression "dVar32 * pixels[3]" identifier * (subscript_expression "pixels[3]" identifier [ number_literal ]))) )))) + (binary_expression "dVar33 * (dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])" identifier * (parenthesized_expression "(dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9])" ( (binary_expression "dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8] + dVar24 * pixels[9]" (binary_expression "dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10] + dVar25 * pixels[8]" (binary_expression "dVar32 * pixels[0xb] +\n                                     dVar30 * pixels[10]" (binary_expression "dVar32 * pixels[0xb]" identifier * (subscript_expression "pixels[0xb]" identifier [ number_literal ])) + (binary_expression "dVar30 * pixels[10]" identifier * (subscript_expression "pixels[10]" identifier [ number_literal ]))) + (binary_expression "dVar25 * pixels[8]" identifier * (subscript_expression "pixels[8]" identifier [ number_literal ]))) + (binary_expression "dVar24 * pixels[9]" identifier * (subscript_expression "pixels[9]" identifier [ number_literal ]))) )))) + (binary_expression "(dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]) * dVar26" (parenthesized_expression "(dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf])" ( (binary_expression "dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd] +\n                             dVar32 * pixels[0xf]" (binary_expression "dVar30 * pixels[0xe] + dVar25 * pixels[0xc] + dVar24 * pixels[0xd]" (binary_expression "dVar30 * pixels[0xe] + dVar25 * pixels[0xc]" (binary_expression "dVar30 * pixels[0xe]" identifier * (subscript_expression "pixels[0xe]" identifier [ number_literal ])) + (binary_expression "dVar25 * pixels[0xc]" identifier * (subscript_expression "pixels[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar24 * pixels[0xd]" identifier * (subscript_expression "pixels[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar32 * pixels[0xf]" identifier * (subscript_expression "pixels[0xf]" identifier [ number_literal ]))) )) * identifier)) )) * identifier) )))) ;) })) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "sVar14 = source->number_channels;" (assignment_expression "sVar14 = source->number_channels" identifier = (field_expression "source->number_channels" identifier -> field_identifier)) ;) (expression_statement "pQVar21 = pQVar21 + 1;" (assignment_expression "pQVar21 = pQVar21 + 1" identifier = (binary_expression "pQVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar20 < (long)sVar14)" ( (binary_expression "lVar20 < (long)sVar14" identifier < (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "MVar13 = MagickTrue;" (assignment_expression "MVar13 = MagickTrue" identifier = identifier) ;) }))) }))) })) (if_statement "if (lVar5 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar13;\n  }" if (parenthesized_expression "(lVar5 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar5 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return MVar13;\n  }" { (return_statement "return MVar13;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined8\nInterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)\n\n{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "undefined8\nInterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)\n\n{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (function_declarator "InterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)" identifier (parameter_list "(double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)" ( (parameter_declaration "double param_1" primitive_type identifier) , (parameter_declaration "double param_2" primitive_type identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "long param_7" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_8" type_identifier identifier) ))) (compound_statement "{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "double *pdVar1;" primitive_type (pointer_declarator "*pdVar1" * identifier) ;) (declaration "float fVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "float fVar8;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "float fVar12;" primitive_type identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "float *pfVar15;" primitive_type (pointer_declarator "*pfVar15" * identifier) ;) (declaration "double *pdVar16;" primitive_type (pointer_declarator "*pdVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar18;" (sized_type_specifier "long" long) identifier ;) (declaration "float *pfVar19;" primitive_type (pointer_declarator "*pfVar19" * identifier) ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "float *pfVar21;" primitive_type (pointer_declarator "*pfVar21" * identifier) ;) (declaration "long lVar22;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "long lVar24;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar25;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar26;" primitive_type identifier ;) (declaration "double dVar27;" primitive_type identifier ;) (declaration "double dVar28;" primitive_type identifier ;) (declaration "double dVar29;" primitive_type identifier ;) (declaration "double dVar30;" primitive_type identifier ;) (declaration "double dVar31;" primitive_type identifier ;) (declaration "double dVar32;" primitive_type identifier ;) (declaration "double dVar33;" primitive_type identifier ;) (declaration "double dVar34;" primitive_type identifier ;) (declaration "double dVar35;" primitive_type identifier ;) (declaration "double dVar36;" primitive_type identifier ;) (declaration "double dVar37;" primitive_type identifier ;) (declaration "double dVar38;" primitive_type identifier ;) (declaration "double local_178;" primitive_type identifier ;) (declaration "double local_170;" primitive_type identifier ;) (declaration "long local_168;" (sized_type_specifier "long" long) identifier ;) (declaration "double local_160;" primitive_type identifier ;) (declaration "double local_148 [16];" primitive_type (array_declarator "local_148 [16]" identifier [ number_literal ]) ;) (declaration "double local_c8 [17];" primitive_type (array_declarator "local_c8 [17]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_3 == 0) {\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }" { (expression_statement "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;" (call_expression "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" identifier (argument_list "("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" ( (string_literal ""source != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" if (parenthesized_expression "(*(long *)(param_3 + 0x3450) != 0xabacadab)" ( (binary_expression "*(long *)(param_3 + 0x3450) != 0xabacadab" (pointer_expression "*(long *)(param_3 + 0x3450)" * (cast_expression "(long *)(param_3 + 0x3450)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x3450)" ( (binary_expression "param_3 + 0x3450" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" { (expression_statement "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" identifier (argument_list "("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" ( (string_literal ""source->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (if_statement "if (param_4 == 0) {\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" { (expression_statement "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" identifier (argument_list "("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" ( (string_literal ""source_view != (CacheView *) NULL"" " string_content ") , (string_literal ""MagickCore/pixel.c"" " string_content ") , number_literal , (string_literal ""InterpolatePixelChannels"" " string_content ") ))) ;) })) (expression_statement "dVar26 = DAT_004294e8;" (assignment_expression "dVar26 = DAT_004294e8" identifier = identifier) ;) (if_statement "if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }" if (parenthesized_expression "(DAT_004294e8 <= param_1)" ( (binary_expression "DAT_004294e8 <= param_1" identifier <= identifier) )) (compound_statement "{\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }" { (expression_statement "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);" (assignment_expression "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" identifier = (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" ( (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1)" (cast_expression "(ulong)DAT_004294f0" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(DAT_004294f0 < param_1)" - (call_expression "(ulong)(DAT_004294f0 < param_1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) ))))) | (binary_expression "~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1" (unary_expression "~-(ulong)(DAT_004294f0 < param_1)" ~ (unary_expression "-(ulong)(DAT_004294f0 < param_1)" - (call_expression "(ulong)(DAT_004294f0 < param_1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) ))))) & (cast_expression "(ulong)param_1" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "dVar26 = floor(dVar26);" (assignment_expression "dVar26 = floor(dVar26)" identifier = (call_expression "floor(dVar26)" identifier (argument_list "(dVar26)" ( identifier )))) ;) (expression_statement "lVar25 = (long)dVar26;" (assignment_expression "lVar25 = (long)dVar26" identifier = (cast_expression "(long)dVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "dVar26 = DAT_004294e8;" (assignment_expression "dVar26 = DAT_004294e8" identifier = identifier) ;) (if_statement "if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }" if (parenthesized_expression "(DAT_004294e8 <= param_2)" ( (binary_expression "DAT_004294e8 <= param_2" identifier <= identifier) )) (compound_statement "{\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }" { (expression_statement "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);" (assignment_expression "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" identifier = (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" ( (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2)" (cast_expression "(ulong)DAT_004294f0" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(DAT_004294f0 < param_2)" - (call_expression "(ulong)(DAT_004294f0 < param_2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) ))))) | (binary_expression "~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2" (unary_expression "~-(ulong)(DAT_004294f0 < param_2)" ~ (unary_expression "-(ulong)(DAT_004294f0 < param_2)" - (call_expression "(ulong)(DAT_004294f0 < param_2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) ))))) & (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "dVar26 = floor(dVar26);" (assignment_expression "dVar26 = floor(dVar26)" identifier = (call_expression "floor(dVar26)" identifier (argument_list "(dVar26)" ( identifier )))) ;) (expression_statement "local_168 = (long)dVar26;" (assignment_expression "local_168 = (long)dVar26" identifier = (cast_expression "(long)dVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }" { (expression_statement "param_6 = *(int *)(param_3 + 0x2f8);" (assignment_expression "param_6 = *(int *)(param_3 + 0x2f8)" identifier = (pointer_expression "*(int *)(param_3 + 0x2f8)" * (cast_expression "(int *)(param_3 + 0x2f8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2f8)" ( (binary_expression "param_3 + 0x2f8" identifier + number_literal) ))))) ;) })) (expression_statement "local_178 = param_1;" (assignment_expression "local_178 = param_1" identifier = identifier) ;) (expression_statement "local_170 = param_2;" (assignment_expression "local_170 = param_2" identifier = identifier) ;) (switch_statement "switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }" switch (parenthesized_expression "(param_6)" ( identifier )) (compound_statement "{\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }" { (case_statement "default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" default : (expression_statement "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier (argument_list "(param_4,lVar25,local_168,2,2,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar13 != 0)" ( (binary_expression "lVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar24 < 1)" ( (binary_expression "lVar24 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" do (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" { (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar20 * 0x10)" ( (binary_expression "lVar18 + lVar20 * 0x10" identifier + (binary_expression "lVar20 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" identifier = (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" * (cast_expression "(uint *)(lVar18 + 4 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4 + lVar17)" ( (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = *(int *)(lVar17 + 4);" (assignment_expression "iVar3 = *(int *)(lVar17 + 4)" identifier = (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }" if (parenthesized_expression "((uVar23 != 0) && (iVar3 != 0))" ( (binary_expression "(uVar23 != 0) && (iVar3 != 0)" (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }" { (expression_statement "dVar31 = param_1 - (double)lVar25;" (assignment_expression "dVar31 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar34 = param_2 - (double)local_168;" (assignment_expression "dVar34 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar32 = dVar26 - dVar31;" (assignment_expression "dVar32 = dVar26 - dVar31" identifier = (binary_expression "dVar26 - dVar31" identifier - identifier)) ;) (expression_statement "dVar37 = dVar26 - dVar34;" (assignment_expression "dVar37 = dVar26 - dVar34" identifier = (binary_expression "dVar26 - dVar34" identifier - identifier)) ;) (expression_statement "dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);" (assignment_expression "dVar28 = (double)*(float *)(lVar13 + lVar20 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar20 * 4)" * (cast_expression "(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar20 * 4)" ( (binary_expression "lVar13 + lVar20 * 4" identifier + (binary_expression "lVar20 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);" (assignment_expression "dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar20 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar20 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar20 + lVar24) * 4" identifier + (binary_expression "(lVar20 + lVar24) * 4" (parenthesized_expression "(lVar20 + lVar24)" ( (binary_expression "lVar20 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (expression_statement "lVar22 = lVar20 + lVar24 * 2;" (assignment_expression "lVar22 = lVar20 + lVar24 * 2" identifier = (binary_expression "lVar20 + lVar24 * 2" identifier + (binary_expression "lVar24 * 2" identifier * number_literal))) ;) (expression_statement "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);" (assignment_expression "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 * 4)" ( (binary_expression "lVar13 + lVar22 * 4" identifier + (binary_expression "lVar22 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);" (assignment_expression "dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar22 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar22 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar22 + lVar24) * 4" identifier + (binary_expression "(lVar22 + lVar24) * 4" (parenthesized_expression "(lVar22 + lVar24)" ( (binary_expression "lVar22 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (if_statement "if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }" { (expression_statement "dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;" (assignment_expression "dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34" identifier = (binary_expression "dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34" (binary_expression "dVar37 * (dVar31 + dVar32)" identifier * (parenthesized_expression "(dVar31 + dVar32)" ( (binary_expression "dVar31 + dVar32" identifier + identifier) ))) + (binary_expression "(dVar31 + dVar32) * dVar34" (parenthesized_expression "(dVar31 + dVar32)" ( (binary_expression "dVar31 + dVar32" identifier + identifier) )) * identifier))) ;) (expression_statement "dVar38 = DAT_003f9c68;" (assignment_expression "dVar38 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar27)" ( (binary_expression "0.0 <= dVar27" number_literal <= identifier) )) (compound_statement "{\n                dVar38 = DAT_003f9608;\n              }" { (expression_statement "dVar38 = DAT_003f9608;" (assignment_expression "dVar38 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }" if (parenthesized_expression "(dVar38 * dVar27 < DAT_003f9600)" ( (binary_expression "dVar38 * dVar27 < DAT_003f9600" (binary_expression "dVar38 * dVar27" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar27 = dVar38 / DAT_003f9600;\n              }" { (expression_statement "dVar27 = dVar38 / DAT_003f9600;" (assignment_expression "dVar27 = dVar38 / DAT_003f9600" identifier = (binary_expression "dVar38 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }" else (compound_statement "{\n                dVar27 = DAT_003f9608 / dVar27;\n              }" { (expression_statement "dVar27 = DAT_003f9608 / dVar27;" (assignment_expression "dVar27 = DAT_003f9608 / dVar27" identifier = (binary_expression "DAT_003f9608 / dVar27" identifier / identifier)) ;) }))) (if_statement "if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" ( (binary_expression "(dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27" (parenthesized_expression "(dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33))" ( (binary_expression "dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)" (binary_expression "dVar37 * (dVar28 * dVar32 + dVar35 * dVar31)" identifier * (parenthesized_expression "(dVar28 * dVar32 + dVar35 * dVar31)" ( (binary_expression "dVar28 * dVar32 + dVar35 * dVar31" (binary_expression "dVar28 * dVar32" identifier * identifier) + (binary_expression "dVar35 * dVar31" identifier * identifier)) ))) + (binary_expression "dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)" identifier * (parenthesized_expression "(dVar31 * dVar36 + dVar32 * dVar33)" ( (binary_expression "dVar31 * dVar36 + dVar32 * dVar33" (binary_expression "dVar31 * dVar36" identifier * identifier) + (binary_expression "dVar32 * dVar33" identifier * identifier)) )))) )) * identifier) )))) ;) })) }) (else_clause "else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" else (compound_statement "{\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" { (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar38 = dVar26;" (assignment_expression "dVar38 = dVar26" identifier = identifier) ;) (expression_statement "dVar27 = dVar26;" (assignment_expression "dVar27 = dVar26" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" if (parenthesized_expression "(*(int *)(lVar18 + 0x44) != 0)" ( (binary_expression "*(int *)(lVar18 + 0x44) != 0" (pointer_expression "*(int *)(lVar18 + 0x44)" * (cast_expression "(int *)(lVar18 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x44)" ( (binary_expression "lVar18 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" { (expression_statement "lVar22 = *(long *)(lVar18 + 0x48) * 4;" (assignment_expression "lVar22 = *(long *)(lVar18 + 0x48) * 4" identifier = (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;" (assignment_expression "dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 8)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 8)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 8" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 8" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;" (assignment_expression "dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 4)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 4" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 4" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;" (assignment_expression "dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" * (cast_expression "(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (binary_expression "lVar13 + *(long *)(lVar18 + 0x48) * 4" identifier + (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ))))) * identifier)) ;) (expression_statement "fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);" (assignment_expression "fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc)" identifier = (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 0xc)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 0xc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 0xc)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 0xc" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 0xc" identifier * number_literal)) ))))) ;) })) (expression_statement "dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;" (assignment_expression "dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" identifier = (binary_expression "(dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" (binary_expression "(dVar32 * dVar27 + dVar31 * dVar38) * dVar37" (parenthesized_expression "(dVar32 * dVar27 + dVar31 * dVar38)" ( (binary_expression "dVar32 * dVar27 + dVar31 * dVar38" (binary_expression "dVar32 * dVar27" identifier * identifier) + (binary_expression "dVar31 * dVar38" identifier * identifier)) )) * identifier) + (binary_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" (parenthesized_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30)" ( (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60" (binary_expression "dVar31 * (double)fVar9" identifier * (cast_expression "(double)fVar9" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) + (binary_expression "dVar32 * dVar30" identifier * identifier)) )) * identifier))) ;) (expression_statement "dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);" (assignment_expression "dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" identifier = (cast_expression "(double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" ( (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608" (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398)" (cast_expression "(ulong)DAT_003f9c68" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(dVar29 < DAT_003fa398)" - (call_expression "(ulong)(dVar29 < DAT_003fa398)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar29 < DAT_003fa398)" ( (binary_expression "dVar29 < DAT_003fa398" identifier < identifier) ))))) | (binary_expression "~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar29 < DAT_003fa398)" ~ (unary_expression "-(ulong)(dVar29 < DAT_003fa398)" - (call_expression "(ulong)(dVar29 < DAT_003fa398)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar29 < DAT_003fa398)" ( (binary_expression "dVar29 < DAT_003fa398" identifier < identifier) ))))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) (if_statement "if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" if (parenthesized_expression "(dVar10 * dVar29 < DAT_003f9600)" ( (binary_expression "dVar10 * dVar29 < DAT_003f9600" (binary_expression "dVar10 * dVar29" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar29 = dVar10 / DAT_003f9600;\n              }" { (expression_statement "dVar29 = dVar10 / DAT_003f9600;" (assignment_expression "dVar29 = dVar10 / DAT_003f9600" identifier = (binary_expression "dVar10 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" else (compound_statement "{\n                dVar29 = DAT_003f9608 / dVar29;\n              }" { (expression_statement "dVar29 = DAT_003f9608 / dVar29;" (assignment_expression "dVar29 = DAT_003f9608 / dVar29" identifier = (binary_expression "DAT_003f9608 / dVar29" identifier / identifier)) ;) }))) (if_statement "if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" ( (binary_expression "dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30))" identifier * (parenthesized_expression "(dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30))" ( (binary_expression "dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" (binary_expression "dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                )" identifier * (parenthesized_expression "(dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                )" ( (binary_expression "dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31" (binary_expression "dVar28 * dVar27 * dVar32" (binary_expression "dVar28 * dVar27" identifier * identifier) * identifier) + (binary_expression "dVar35 * dVar38 * dVar31" (binary_expression "dVar35 * dVar38" identifier * identifier) * identifier)) ))) + (binary_expression "dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" identifier * (parenthesized_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" ( (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60" (binary_expression "dVar31 * (double)fVar9" identifier * (cast_expression "(double)fVar9" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) * identifier) + (binary_expression "dVar32 * dVar33 * dVar30" (binary_expression "dVar32 * dVar33" identifier * identifier) * identifier)) )))) ))) )))) ;) })) }))) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar20 < lVar24)" ( (binary_expression "lVar20 < lVar24" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:" case number_literal :) (case_statement "case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (if_statement "if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" if (parenthesized_expression "(param_6 == 2)" ( (binary_expression "param_6 == 2" identifier == number_literal) )) (compound_statement "{\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }" { (if_statement "if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" if (parenthesized_expression "(param_1 < DAT_004294e8)" ( (binary_expression "param_1 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n        local_178 = DAT_004294e8;\n      }" { (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" else (if_statement "if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" if (parenthesized_expression "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) )) (compound_statement "{\n        local_178 = DAT_004294f0;\n      }" { (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "local_178 = local_178 + DAT_003f9c28;" (assignment_expression "local_178 = local_178 + DAT_003f9c28" identifier = (binary_expression "local_178 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" if (parenthesized_expression "((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30)" ( (binary_expression "(double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_178 & DAT_003f9c70)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)local_178 & DAT_003f9c70)" ( (binary_expression "(ulong)local_178 & DAT_003f9c70" (cast_expression "(ulong)local_178" ( (type_descriptor "ulong" type_identifier) ) identifier) & identifier) ))) < identifier) )) (compound_statement "{\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" { (expression_statement "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );" (assignment_expression "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" identifier = (cast_expression "(double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" ( (binary_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178" (call_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" ( (binary_expression "(double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_178" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_178" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) - (cast_expression "(double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" ( (binary_expression "-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_178 < (double)(long)local_178)" - (call_expression "(ulong)(local_178 < (double)(long)local_178)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_178 < (double)(long)local_178)" ( (binary_expression "local_178 < (double)(long)local_178" identifier < (cast_expression "(double)(long)local_178" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_178" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ))) | (binary_expression "~DAT_003f9c70 & (ulong)local_178" (unary_expression "~DAT_003f9c70" ~ identifier) & (cast_expression "(ulong)local_178" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "lVar25 = (long)(local_178 - DAT_003f9608);" (assignment_expression "lVar25 = (long)(local_178 - DAT_003f9608)" identifier = (cast_expression "(long)(local_178 - DAT_003f9608)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(local_178 - DAT_003f9608)" ( (binary_expression "local_178 - DAT_003f9608" identifier - identifier) )))) ;) (if_statement "if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" if (parenthesized_expression "(param_2 < DAT_004294e8)" ( (binary_expression "param_2 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n        local_170 = DAT_004294e8;\n      }" { (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" else (if_statement "if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" if (parenthesized_expression "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) )) (compound_statement "{\n        local_170 = DAT_004294f0;\n      }" { (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "local_170 = local_170 + DAT_003f9c28;" (assignment_expression "local_170 = local_170 + DAT_003f9c28" identifier = (binary_expression "local_170 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" if (parenthesized_expression "((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30)" ( (binary_expression "(double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_170 & DAT_003f9c70)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)local_170 & DAT_003f9c70)" ( (binary_expression "(ulong)local_170 & DAT_003f9c70" (cast_expression "(ulong)local_170" ( (type_descriptor "ulong" type_identifier) ) identifier) & identifier) ))) < identifier) )) (compound_statement "{\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" { (expression_statement "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );" (assignment_expression "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" identifier = (cast_expression "(double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" ( (binary_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170" (call_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" ( (binary_expression "(double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_170" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_170" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) - (cast_expression "(double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" ( (binary_expression "-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_170 < (double)(long)local_170)" - (call_expression "(ulong)(local_170 < (double)(long)local_170)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_170 < (double)(long)local_170)" ( (binary_expression "local_170 < (double)(long)local_170" identifier < (cast_expression "(double)(long)local_170" ( (type_descriptor "double" primitive_type) ) (cast_expression "(long)local_170" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ))) | (binary_expression "~DAT_003f9c70 & (ulong)local_170" (unary_expression "~DAT_003f9c70" ~ identifier) & (cast_expression "(ulong)local_170" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) })) (expression_statement "local_168 = (long)(local_170 - DAT_003f9608);" (assignment_expression "local_168 = (long)(local_170 - DAT_003f9608)" identifier = (cast_expression "(long)(local_170 - DAT_003f9608)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(local_170 - DAT_003f9608)" ( (binary_expression "local_170 - DAT_003f9608" identifier - identifier) )))) ;) (expression_statement "lVar13 = 3;" (assignment_expression "lVar13 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" else (compound_statement "{\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" { (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" identifier = number_literal) ;) (if_statement "if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }" if (parenthesized_expression "(param_6 == 3)" ( (binary_expression "param_6 == 3" identifier == number_literal) )) (compound_statement "{\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }" { (expression_statement "lVar25 = lVar25 + -1;" (assignment_expression "lVar25 = lVar25 + -1" identifier = (binary_expression "lVar25 + -1" identifier + number_literal)) ;) (expression_statement "local_168 = local_168 + -1;" (assignment_expression "local_168 = local_168 + -1" identifier = (binary_expression "local_168 + -1" identifier + number_literal)) ;) (expression_statement "lVar13 = 4;" (assignment_expression "lVar13 = 4" identifier = number_literal) ;) })) }))) (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8)" identifier (argument_list "(param_4,lVar25,local_168,lVar13,lVar13,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "dVar31 = DAT_003f9c68;" (assignment_expression "dVar31 = DAT_003f9c68" identifier = identifier) ;) (expression_statement "dVar28 = DAT_003f9c60;" (assignment_expression "dVar28 = DAT_003f9c60" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = lVar13 * lVar13;" (assignment_expression "lVar13 = lVar13 * lVar13" identifier = (binary_expression "lVar13 * lVar13" identifier * identifier)) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar24 < 1)" ( (binary_expression "lVar24 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" { (expression_statement "pdVar1 = local_c8 + lVar13;" (assignment_expression "pdVar1 = local_c8 + lVar13" identifier = (binary_expression "local_c8 + lVar13" identifier + identifier)) ;) (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" do (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" { (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar20 * 0x10)" ( (binary_expression "lVar18 + lVar20 * 0x10" identifier + (binary_expression "lVar20 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" identifier = (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" * (cast_expression "(uint *)(lVar18 + 4 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4 + lVar17)" ( (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = *(int *)(lVar17 + 4);" (assignment_expression "iVar3 = *(int *)(lVar17 + 4)" identifier = (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }" if (parenthesized_expression "((uVar23 != 0) && (iVar3 != 0))" ( (binary_expression "(uVar23 != 0) && (iVar3 != 0)" (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }" { (if_statement "if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" if (parenthesized_expression "(lVar13 == 0)" ( (binary_expression "lVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }" { (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (if_statement "if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }" { (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00253e49;" goto statement_identifier ;) })) }) (else_clause "else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" else (compound_statement "{\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" { (expression_statement "pfVar15 = (float *)(lVar25 + lVar20 * 4);" (assignment_expression "pfVar15 = (float *)(lVar25 + lVar20 * 4)" identifier = (cast_expression "(float *)(lVar25 + lVar20 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar20 * 4)" ( (binary_expression "lVar25 + lVar20 * 4" identifier + (binary_expression "lVar20 * 4" identifier * number_literal)) )))) ;) (expression_statement "pdVar16 = local_c8;" (assignment_expression "pdVar16 = local_c8" identifier = identifier) ;) (do_statement "do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);" do (compound_statement "{\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              }" { (expression_statement "*pdVar16 = (double)*pfVar15;" (assignment_expression "*pdVar16 = (double)*pfVar15" (pointer_expression "*pdVar16" * identifier) = (cast_expression "(double)*pfVar15" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar15" * identifier))) ;) (expression_statement "pfVar15 = pfVar15 + lVar24;" (assignment_expression "pfVar15 = pfVar15 + lVar24" identifier = (binary_expression "pfVar15 + lVar24" identifier + identifier)) ;) (expression_statement "pdVar16 = pdVar16 + 1;" (assignment_expression "pdVar16 = pdVar16 + 1" identifier = (binary_expression "pdVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar1 != pdVar16)" ( (binary_expression "pdVar1 != pdVar16" identifier != identifier) )) ;) (if_statement "if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (do_statement "do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);" do (compound_statement "{\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                }" { (expression_statement "dVar32 = dVar32 + local_c8[lVar24];" (assignment_expression "dVar32 = dVar32 + local_c8[lVar24]" identifier = (binary_expression "dVar32 + local_c8[lVar24]" identifier + (subscript_expression "local_c8[lVar24]" identifier [ identifier ]))) ;) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 - lVar24 != 0 && lVar24 <= lVar13)" ( (binary_expression "lVar13 - lVar24 != 0 && lVar24 <= lVar13" (binary_expression "lVar13 - lVar24 != 0" (binary_expression "lVar13 - lVar24" identifier - identifier) != number_literal) && (binary_expression "lVar24 <= lVar13" identifier <= identifier)) )) ;) (labeled_statement "LAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" statement_identifier : (if_statement "if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar32 / (double)lVar13)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar32 / (double)lVar13)" ( (binary_expression "dVar32 / (double)lVar13" identifier / (cast_expression "(double)lVar13" ( (type_descriptor "double" primitive_type) ) identifier)) )))) ;) }))) (goto_statement "goto LAB_0025586a;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)(lVar18 + 0x44);" (assignment_expression "iVar4 = *(int *)(lVar18 + 0x44)" identifier = (pointer_expression "*(int *)(lVar18 + 0x44)" * (cast_expression "(int *)(lVar18 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x44)" ( (binary_expression "lVar18 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" identifier = number_literal) ;) (expression_statement "pdVar16 = local_c8;" (assignment_expression "pdVar16 = local_c8" identifier = identifier) ;) (do_statement "do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);" do (compound_statement "{\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              }" { (if_statement "if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }" { (expression_statement "dVar33 = *pdVar16;" (assignment_expression "dVar33 = *pdVar16" identifier = (pointer_expression "*pdVar16" * identifier)) ;) (expression_statement "dVar34 = dVar26;" (assignment_expression "dVar34 = dVar26" identifier = identifier) ;) (labeled_statement "LAB_00255912:\n                  dVar35 = dVar26 / dVar34;" statement_identifier : (expression_statement "dVar35 = dVar26 / dVar34;" (assignment_expression "dVar35 = dVar26 / dVar34" identifier = (binary_expression "dVar26 / dVar34" identifier / identifier)) ;)) }) (else_clause "else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" else (compound_statement "{\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" { (expression_statement "dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;" (assignment_expression "dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28" identifier = (binary_expression "(double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28" (cast_expression "(double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" * (cast_expression "(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" ( (binary_expression "lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4" identifier + (binary_expression "(lVar22 + *(long *)(lVar18 + 0x48)) * 4" (parenthesized_expression "(lVar22 + *(long *)(lVar18 + 0x48))" ( (binary_expression "lVar22 + *(long *)(lVar18 + 0x48)" identifier + (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) ))))) )) * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar33 = dVar34 * *pdVar16;" (assignment_expression "dVar33 = dVar34 * *pdVar16" identifier = (binary_expression "dVar34 * *pdVar16" identifier * (pointer_expression "*pdVar16" * identifier))) ;) (expression_statement "*pdVar16 = dVar33;" (assignment_expression "*pdVar16 = dVar33" (pointer_expression "*pdVar16" * identifier) = identifier) ;) (expression_statement "dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);" (assignment_expression "dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" identifier = (cast_expression "(double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" ( (binary_expression "(ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608" (binary_expression "(ulong)dVar31 & -(ulong)(dVar34 < 0.0)" (cast_expression "(ulong)dVar31" ( (type_descriptor "ulong" type_identifier) ) identifier) & (unary_expression "-(ulong)(dVar34 < 0.0)" - (call_expression "(ulong)(dVar34 < 0.0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar34 < 0.0)" ( (binary_expression "dVar34 < 0.0" identifier < number_literal) ))))) | (binary_expression "~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar34 < 0.0)" ~ (unary_expression "-(ulong)(dVar34 < 0.0)" - (call_expression "(ulong)(dVar34 < 0.0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(dVar34 < 0.0)" ( (binary_expression "dVar34 < 0.0" identifier < number_literal) ))))) & (cast_expression "(ulong)DAT_003f9608" ( (type_descriptor "ulong" type_identifier) ) identifier))) )))) ;) (if_statement "if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;" if (parenthesized_expression "(DAT_003f9600 <= dVar34 * dVar35)" ( (binary_expression "DAT_003f9600 <= dVar34 * dVar35" identifier <= (binary_expression "dVar34 * dVar35" identifier * identifier)) )) (goto_statement "goto LAB_00255912;" goto statement_identifier ;)) (expression_statement "dVar35 = dVar35 / DAT_003f9600;" (assignment_expression "dVar35 = dVar35 / DAT_003f9600" identifier = (binary_expression "dVar35 / DAT_003f9600" identifier / identifier)) ;) }))) (expression_statement "dVar32 = dVar32 + dVar33 * dVar35;" (assignment_expression "dVar32 = dVar32 + dVar33 * dVar35" identifier = (binary_expression "dVar32 + dVar33 * dVar35" identifier + (binary_expression "dVar33 * dVar35" identifier * identifier))) ;) (expression_statement "lVar22 = lVar22 + lVar24;" (assignment_expression "lVar22 = lVar22 + lVar24" identifier = (binary_expression "lVar22 + lVar24" identifier + identifier)) ;) (expression_statement "pdVar16 = pdVar16 + 1;" (assignment_expression "pdVar16 = pdVar16 + 1" identifier = (binary_expression "pdVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar16 != pdVar1)" ( (binary_expression "pdVar16 != pdVar1" identifier != identifier) )) ;) }))) (if_statement "if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar32 / (double)lVar13)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar32 / (double)lVar13)" ( (binary_expression "dVar32 / (double)lVar13" identifier / (cast_expression "(double)lVar13" ( (type_descriptor "double" primitive_type) ) identifier)) )))) ;) })) })) (labeled_statement "LAB_0025586a:\n          lVar20 = lVar20 + 1;" statement_identifier : (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;)) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar20 < lVar24)" ( (binary_expression "lVar20 < lVar24" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier = (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier (argument_list "(param_4,lVar25,local_168,2,2,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier ))))) ;) (expression_statement "dVar31 = _DAT_004294f8;" (assignment_expression "dVar31 = _DAT_004294f8" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9600;" (assignment_expression "dVar26 = DAT_003f9600" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(pfVar15 != (float *)0x0)" ( (binary_expression "pfVar15 != (float *)0x0" identifier != (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar13 < 1)" ( (binary_expression "lVar13 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" identifier = identifier) ;) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" do (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" { (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);" (assignment_expression "uVar23 = *(uint *)(lVar20 + lVar24 * 0x10)" identifier = (pointer_expression "*(uint *)(lVar20 + lVar24 * 0x10)" * (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + lVar24 * 0x10)" ( (binary_expression "lVar20 + lVar24 * 0x10" identifier + (binary_expression "lVar24 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "lVar18 = (ulong)uVar23 * 0x10;" (assignment_expression "lVar18 = (ulong)uVar23 * 0x10" identifier = (binary_expression "(ulong)uVar23 * 0x10" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(lVar20 + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(lVar20 + 4 + lVar18) != 0" (pointer_expression "*(int *)(lVar20 + 4 + lVar18)" * (cast_expression "(int *)(lVar20 + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 4 + lVar18)" ( (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" identifier + number_literal) + identifier) )))) != number_literal) ))) )) (compound_statement "{\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }" { (if_statement "if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" if (parenthesized_expression "(*(int *)(param_3 + 0x33c) == 4)" ( (binary_expression "*(int *)(param_3 + 0x33c) == 4" (pointer_expression "*(int *)(param_3 + 0x33c)" * (cast_expression "(int *)(param_3 + 0x33c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x33c)" ( (binary_expression "param_3 + 0x33c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }" { (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" identifier = (pointer_expression "*(int *)(lVar20 + 0x44)" * (cast_expression "(int *)(lVar20 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x44)" ( (binary_expression "lVar20 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);" do (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" { (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" { (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier = (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier [ (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" identifier + (pointer_expression "*(long *)(lVar20 + 0x48)" * (cast_expression "(long *)(lVar20 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) ))))) ])) ;) })) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (if_statement "if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" if (parenthesized_expression "(uVar23 == 4)" ( (binary_expression "uVar23 == 4" identifier == number_literal) )) (compound_statement "{\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }" { (expression_statement "local_c8[lVar17] = (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ]))) ;) }) (else_clause "else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" else (compound_statement "{\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" { (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ])))) ;) }))) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" identifier = (binary_expression "lVar22 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar17 != 4)" ( (binary_expression "lVar17 != 4" identifier != number_literal) )) ;) }) (else_clause "else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" else (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" identifier = identifier) ;) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);" do (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" { (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" identifier = (binary_expression "pfVar19 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar20 != 4)" ( (binary_expression "lVar20 != 4" identifier != number_literal) )) ;) }))) (expression_statement "dVar33 = param_2 - (double)local_168;" (assignment_expression "dVar33 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" if (parenthesized_expression "(dVar31 <= dVar33)" ( (binary_expression "dVar31 <= dVar33" identifier <= identifier) )) (compound_statement "{\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }" { (expression_statement "local_148[0] = local_148[2];" (assignment_expression "local_148[0] = local_148[2]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (subscript_expression "local_148[2]" identifier [ number_literal ])) ;) (expression_statement "local_c8[0] = local_c8[2];" (assignment_expression "local_c8[0] = local_c8[2]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (subscript_expression "local_c8[2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00254349:\n              local_148[1] = local_148[3];" statement_identifier : (expression_statement "local_148[1] = local_148[3];" (assignment_expression "local_148[1] = local_148[3]" (subscript_expression "local_148[1]" identifier [ number_literal ]) = (subscript_expression "local_148[3]" identifier [ number_literal ])) ;)) (expression_statement "local_c8[1] = local_c8[3];" (assignment_expression "local_c8[1] = local_c8[3]" (subscript_expression "local_c8[1]" identifier [ number_literal ]) = (subscript_expression "local_c8[3]" identifier [ number_literal ])) ;) }) (else_clause "else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" else (if_statement "if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" if (parenthesized_expression "(dVar33 <= DAT_00407738)" ( (binary_expression "dVar33 <= DAT_00407738" identifier <= identifier) )) (compound_statement "{\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }" { (if_statement "if (_DAT_004294f8 <= dVar33) goto LAB_00254349;" if (parenthesized_expression "(_DAT_004294f8 <= dVar33)" ( (binary_expression "_DAT_004294f8 <= dVar33" identifier <= identifier) )) (goto_statement "goto LAB_00254349;" goto statement_identifier ;)) (if_statement "if (DAT_00407738 < dVar33) goto LAB_002544fd;" if (parenthesized_expression "(DAT_00407738 < dVar33)" ( (binary_expression "DAT_00407738 < dVar33" identifier < identifier) )) (goto_statement "goto LAB_002544fd;" goto statement_identifier ;)) }) (else_clause "else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" else (compound_statement "{\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" { (expression_statement "local_148[0] = local_148[0] + local_148[2];" (assignment_expression "local_148[0] = local_148[0] + local_148[2]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (binary_expression "local_148[0] + local_148[2]" (subscript_expression "local_148[0]" identifier [ number_literal ]) + (subscript_expression "local_148[2]" identifier [ number_literal ]))) ;) (expression_statement "local_c8[0] = local_c8[0] + local_c8[2];" (assignment_expression "local_c8[0] = local_c8[0] + local_c8[2]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (binary_expression "local_c8[0] + local_c8[2]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) + (subscript_expression "local_c8[2]" identifier [ number_literal ]))) ;) (expression_statement "dVar32 = DAT_00407728;" (assignment_expression "dVar32 = DAT_00407728" identifier = identifier) ;) (if_statement "if (_DAT_004294f8 <= dVar33) goto LAB_00254349;" if (parenthesized_expression "(_DAT_004294f8 <= dVar33)" ( (binary_expression "_DAT_004294f8 <= dVar33" identifier <= identifier) )) (goto_statement "goto LAB_00254349;" goto statement_identifier ;)) (labeled_statement "LAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];" statement_identifier : (expression_statement "local_148[1] = local_148[1] + local_148[3];" (assignment_expression "local_148[1] = local_148[1] + local_148[3]" (subscript_expression "local_148[1]" identifier [ number_literal ]) = (binary_expression "local_148[1] + local_148[3]" (subscript_expression "local_148[1]" identifier [ number_literal ]) + (subscript_expression "local_148[3]" identifier [ number_literal ]))) ;)) (expression_statement "local_c8[1] = local_c8[1] + local_c8[3];" (assignment_expression "local_c8[1] = local_c8[1] + local_c8[3]" (subscript_expression "local_c8[1]" identifier [ number_literal ]) = (binary_expression "local_c8[1] + local_c8[3]" (subscript_expression "local_c8[1]" identifier [ number_literal ]) + (subscript_expression "local_c8[3]" identifier [ number_literal ]))) ;) (expression_statement "dVar32 = DAT_00407728;" (assignment_expression "dVar32 = DAT_00407728" identifier = identifier) ;) }))))) (if_statement "if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" if (parenthesized_expression "(param_1 - (double)lVar25 < dVar31)" ( (binary_expression "param_1 - (double)lVar25 < dVar31" (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }" { (if_statement "if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }" if (parenthesized_expression "(DAT_00407738 < param_1 - (double)lVar25)" ( (binary_expression "DAT_00407738 < param_1 - (double)lVar25" identifier < (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) )) (compound_statement "{\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }" { (expression_statement "dVar32 = dVar32 + dVar32;" (assignment_expression "dVar32 = dVar32 + dVar32" identifier = (binary_expression "dVar32 + dVar32" identifier + identifier)) ;) (expression_statement "local_148[0] = local_148[0] + local_148[1];" (assignment_expression "local_148[0] = local_148[0] + local_148[1]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (binary_expression "local_148[0] + local_148[1]" (subscript_expression "local_148[0]" identifier [ number_literal ]) + (subscript_expression "local_148[1]" identifier [ number_literal ]))) ;) (expression_statement "local_c8[0] = local_c8[0] + local_c8[1];" (assignment_expression "local_c8[0] = local_c8[0] + local_c8[1]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (binary_expression "local_c8[0] + local_c8[1]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) + (subscript_expression "local_c8[1]" identifier [ number_literal ]))) ;) })) }) (else_clause "else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" else (compound_statement "{\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" { (expression_statement "local_148[0] = local_148[1];" (assignment_expression "local_148[0] = local_148[1]" (subscript_expression "local_148[0]" identifier [ number_literal ]) = (subscript_expression "local_148[1]" identifier [ number_literal ])) ;) (expression_statement "local_c8[0] = local_c8[1];" (assignment_expression "local_c8[0] = local_c8[1]" (subscript_expression "local_c8[0]" identifier [ number_literal ]) = (subscript_expression "local_c8[1]" identifier [ number_literal ])) ;) }))) (if_statement "if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" if (parenthesized_expression "(uVar23 == 4)" ( (binary_expression "uVar23 == 4" identifier == number_literal) )) (compound_statement "{\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }" { (expression_statement "dVar33 = DAT_003fa390;" (assignment_expression "dVar33 = DAT_003fa390" identifier = identifier) ;) (if_statement "if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }" if (parenthesized_expression "(dVar26 <= dVar32)" ( (binary_expression "dVar26 <= dVar32" identifier <= identifier) )) (compound_statement "{\n                dVar33 = dVar28 / dVar32;\n              }" { (expression_statement "dVar33 = dVar28 / dVar32;" (assignment_expression "dVar33 = dVar28 / dVar32" identifier = (binary_expression "dVar28 / dVar32" identifier / identifier)) ;) })) }) (else_clause "else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" else (compound_statement "{\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" { (expression_statement "dVar32 = DAT_003f9c68;" (assignment_expression "dVar32 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= local_148[0])" ( (binary_expression "0.0 <= local_148[0]" number_literal <= (subscript_expression "local_148[0]" identifier [ number_literal ])) )) (compound_statement "{\n                dVar32 = DAT_003f9608;\n              }" { (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" if (parenthesized_expression "(local_148[0] * dVar32 < dVar26)" ( (binary_expression "local_148[0] * dVar32 < dVar26" (binary_expression "local_148[0] * dVar32" (subscript_expression "local_148[0]" identifier [ number_literal ]) * identifier) < identifier) )) (compound_statement "{\n                dVar33 = dVar32 / dVar26;\n              }" { (expression_statement "dVar33 = dVar32 / dVar26;" (assignment_expression "dVar33 = dVar32 / dVar26" identifier = (binary_expression "dVar32 / dVar26" identifier / identifier)) ;) }) (else_clause "else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" else (compound_statement "{\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" { (expression_statement "dVar33 = DAT_003f9608 / local_148[0];" (assignment_expression "dVar33 = DAT_003f9608 / local_148[0]" identifier = (binary_expression "DAT_003f9608 / local_148[0]" identifier / (subscript_expression "local_148[0]" identifier [ number_literal ]))) ;) }))) }))) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }" if (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" ( (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" * (cast_expression "(int *)(lVar18 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4)" ( (binary_expression "lVar18 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0])" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" identifier + (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" * (cast_expression "(long *)(lVar18 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 8)" ( (binary_expression "lVar18 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar33 * local_c8[0])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar33 * local_c8[0])" ( (binary_expression "dVar33 * local_c8[0]" identifier * (subscript_expression "local_c8[0]" identifier [ number_literal ])) )))) ;) })) })) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" identifier = (binary_expression "pfVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar24 < lVar13)" ( (binary_expression "lVar24 < lVar13" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier = (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier (argument_list "(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( identifier , (binary_expression "lVar25 + -1" identifier + number_literal) , (binary_expression "local_168 + -1" identifier + number_literal) , number_literal , number_literal , identifier ))))) ;) (expression_statement "dVar28 = DAT_00406598;" (assignment_expression "dVar28 = DAT_00406598" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(pfVar15 != (float *)0x0)" ( (binary_expression "pfVar15 != (float *)0x0" identifier != (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar13 < 1)" ( (binary_expression "lVar13 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" identifier = identifier) ;) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" do (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" { (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;" (assignment_expression "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + lVar24 * 0x10)" ( (binary_expression "lVar20 + lVar24 * 0x10" identifier + (binary_expression "lVar24 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar20 + 4 + lVar18);" (assignment_expression "uVar23 = *(uint *)(lVar20 + 4 + lVar18)" identifier = (pointer_expression "*(uint *)(lVar20 + 4 + lVar18)" * (cast_expression "(uint *)(lVar20 + 4 + lVar18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 4 + lVar18)" ( (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }" { (expression_statement "uVar23 = uVar23 & 4;" (assignment_expression "uVar23 = uVar23 & 4" identifier = (binary_expression "uVar23 & 4" identifier & number_literal)) ;) (if_statement "if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" identifier = identifier) ;) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);" do (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" { (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" identifier = (binary_expression "pfVar19 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar20 != 0x10)" ( (binary_expression "lVar20 != 0x10" identifier != number_literal) )) ;) }) (else_clause "else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" else (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" { (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" identifier = (pointer_expression "*(int *)(lVar20 + 0x44)" * (cast_expression "(int *)(lVar20 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x44)" ( (binary_expression "lVar20 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);" do (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" { (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" { (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier = (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier [ (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" identifier + (pointer_expression "*(long *)(lVar20 + 0x48)" * (cast_expression "(long *)(lVar20 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) ))))) ])) ;) })) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ])))) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" identifier = (binary_expression "lVar22 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar17 != 0x10)" ( (binary_expression "lVar17 != 0x10" identifier != number_literal) )) ;) }))) (expression_statement "dVar34 = param_1 - (double)lVar25;" (assignment_expression "dVar34 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar31 = dVar26 - dVar34;" (assignment_expression "dVar31 = dVar26 - dVar34" identifier = (binary_expression "dVar26 - dVar34" identifier - identifier)) ;) (expression_statement "dVar32 = dVar34 * dVar28 * dVar31;" (assignment_expression "dVar32 = dVar34 * dVar28 * dVar31" identifier = (binary_expression "dVar34 * dVar28 * dVar31" (binary_expression "dVar34 * dVar28" identifier * identifier) * identifier)) ;) (expression_statement "dVar35 = dVar31 * dVar32;" (assignment_expression "dVar35 = dVar31 * dVar32" identifier = (binary_expression "dVar31 * dVar32" identifier * identifier)) ;) (expression_statement "dVar32 = dVar32 * dVar34;" (assignment_expression "dVar32 = dVar32 * dVar34" identifier = (binary_expression "dVar32 * dVar34" identifier * identifier)) ;) (expression_statement "dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);" (assignment_expression "dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35)" identifier = (binary_expression "(dVar31 - dVar35) + (dVar32 - dVar35)" (parenthesized_expression "(dVar31 - dVar35)" ( (binary_expression "dVar31 - dVar35" identifier - identifier) )) + (parenthesized_expression "(dVar32 - dVar35)" ( (binary_expression "dVar32 - dVar35" identifier - identifier) )))) ;) (expression_statement "dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);" (assignment_expression "dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35)" identifier = (binary_expression "(dVar34 - dVar32) - (dVar32 - dVar35)" (parenthesized_expression "(dVar34 - dVar32)" ( (binary_expression "dVar34 - dVar32" identifier - identifier) )) - (parenthesized_expression "(dVar32 - dVar35)" ( (binary_expression "dVar32 - dVar35" identifier - identifier) )))) ;) (expression_statement "dVar31 = param_2 - (double)local_168;" (assignment_expression "dVar31 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar36 = dVar26 - dVar31;" (assignment_expression "dVar36 = dVar26 - dVar31" identifier = (binary_expression "dVar26 - dVar31" identifier - identifier)) ;) (expression_statement "dVar38 = dVar31 * dVar28 * dVar36;" (assignment_expression "dVar38 = dVar31 * dVar28 * dVar36" identifier = (binary_expression "dVar31 * dVar28 * dVar36" (binary_expression "dVar31 * dVar28" identifier * identifier) * identifier)) ;) (expression_statement "dVar34 = dVar36 * dVar38;" (assignment_expression "dVar34 = dVar36 * dVar38" identifier = (binary_expression "dVar36 * dVar38" identifier * identifier)) ;) (expression_statement "dVar38 = dVar38 * dVar31;" (assignment_expression "dVar38 = dVar38 * dVar31" identifier = (binary_expression "dVar38 * dVar31" identifier * identifier)) ;) (expression_statement "dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);" (assignment_expression "dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34)" identifier = (binary_expression "(dVar36 - dVar34) + (dVar38 - dVar34)" (parenthesized_expression "(dVar36 - dVar34)" ( (binary_expression "dVar36 - dVar34" identifier - identifier) )) + (parenthesized_expression "(dVar38 - dVar34)" ( (binary_expression "dVar38 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);" (assignment_expression "dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34)" identifier = (binary_expression "(dVar31 - dVar38) - (dVar38 - dVar34)" (parenthesized_expression "(dVar31 - dVar38)" ( (binary_expression "dVar31 - dVar38" identifier - identifier) )) - (parenthesized_expression "(dVar38 - dVar34)" ( (binary_expression "dVar38 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar31 = DAT_003f9608;" (assignment_expression "dVar31 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" { (expression_statement "dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;" (assignment_expression "dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" identifier = (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36" (parenthesized_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb])" ( (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]" (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9]" (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8]" (binary_expression "dVar37 * local_148[10]" identifier * (subscript_expression "local_148[10]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_148[8]" identifier * (subscript_expression "local_148[8]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[9]" identifier * (subscript_expression "local_148[9]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[0xb]" identifier * (subscript_expression "local_148[0xb]" identifier [ number_literal ]))) )) * identifier) + (binary_expression "(dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34" (parenthesized_expression "(dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3])" ( (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]" (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2]" (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1]" (binary_expression "dVar35 * local_148[0]" identifier * (subscript_expression "local_148[0]" identifier [ number_literal ])) + (binary_expression "dVar33 * local_148[1]" identifier * (subscript_expression "local_148[1]" identifier [ number_literal ]))) + (binary_expression "dVar37 * local_148[2]" identifier * (subscript_expression "local_148[2]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[3]" identifier * (subscript_expression "local_148[3]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27" (parenthesized_expression "(dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7])" ( (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]" (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5]" (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4]" (binary_expression "dVar37 * local_148[6]" identifier * (subscript_expression "local_148[6]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_148[4]" identifier * (subscript_expression "local_148[4]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[5]" identifier * (subscript_expression "local_148[5]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[7]" identifier * (subscript_expression "local_148[7]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" (parenthesized_expression "(dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf])" ( (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]" (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]" (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc]" (binary_expression "dVar37 * local_148[0xe]" identifier * (subscript_expression "local_148[0xe]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_148[0xc]" identifier * (subscript_expression "local_148[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[0xd]" identifier * (subscript_expression "local_148[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_148[0xf]" identifier * (subscript_expression "local_148[0xf]" identifier [ number_literal ]))) )) * identifier))) ;) (expression_statement "dVar30 = DAT_003f9c68;" (assignment_expression "dVar30 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar31)" ( (binary_expression "0.0 <= dVar31" number_literal <= identifier) )) (compound_statement "{\n                dVar30 = DAT_003f9608;\n              }" { (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" if (parenthesized_expression "(dVar31 * dVar30 < DAT_003f9600)" ( (binary_expression "dVar31 * dVar30 < DAT_003f9600" (binary_expression "dVar31 * dVar30" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar31 = dVar30 / DAT_003f9600;\n              }" { (expression_statement "dVar31 = dVar30 / DAT_003f9600;" (assignment_expression "dVar31 = dVar30 / DAT_003f9600" identifier = (binary_expression "dVar30 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" else (compound_statement "{\n                dVar31 = DAT_003f9608 / dVar31;\n              }" { (expression_statement "dVar31 = DAT_003f9608 / dVar31;" (assignment_expression "dVar31 = DAT_003f9608 / dVar31" identifier = (binary_expression "DAT_003f9608 / dVar31" identifier / identifier)) ;) }))) })) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }" if (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" ( (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" * (cast_expression "(int *)(lVar18 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4)" ( (binary_expression "lVar18 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" identifier + (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" * (cast_expression "(long *)(lVar18 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 8)" ( (binary_expression "lVar18 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" ( (binary_expression "(dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31" (parenthesized_expression "(dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38)" ( (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3])" identifier * (parenthesized_expression "(dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3])" ( (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]" (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1]" (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0]" (binary_expression "dVar37 * local_c8[2]" identifier * (subscript_expression "local_c8[2]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_c8[0]" identifier * (subscript_expression "local_c8[0]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[1]" identifier * (subscript_expression "local_c8[1]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_c8[3]" identifier * (subscript_expression "local_c8[3]" identifier [ number_literal ]))) ))) + (binary_expression "(dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27" (parenthesized_expression "(dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7])" ( (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]" (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5]" (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4]" (binary_expression "dVar37 * local_c8[6]" identifier * (subscript_expression "local_c8[6]" identifier [ number_literal ])) + (binary_expression "dVar35 * local_c8[4]" identifier * (subscript_expression "local_c8[4]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[5]" identifier * (subscript_expression "local_c8[5]" identifier [ number_literal ]))) + (binary_expression "dVar32 * local_c8[7]" identifier * (subscript_expression "local_c8[7]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" identifier * (parenthesized_expression "(dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" ( (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]" (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8]" (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10]" (binary_expression "dVar32 * local_c8[0xb]" identifier * (subscript_expression "local_c8[0xb]" identifier [ number_literal ])) + (binary_expression "dVar37 * local_c8[10]" identifier * (subscript_expression "local_c8[10]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[8]" identifier * (subscript_expression "local_c8[8]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[9]" identifier * (subscript_expression "local_c8[9]" identifier [ number_literal ]))) )))) + (binary_expression "(dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38" (parenthesized_expression "(dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])" ( (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd]" (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc]" (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe]" (binary_expression "dVar32 * local_c8[0xf]" identifier * (subscript_expression "local_c8[0xf]" identifier [ number_literal ])) + (binary_expression "dVar37 * local_c8[0xe]" identifier * (subscript_expression "local_c8[0xe]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[0xc]" identifier * (subscript_expression "local_c8[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[0xd]" identifier * (subscript_expression "local_c8[0xd]" identifier [ number_literal ]))) )) * identifier)) )) * identifier) )))) ;) })) })) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" identifier = (binary_expression "pfVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar24 < lVar13)" ( (binary_expression "lVar24 < lVar13" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8)" identifier (argument_list "(param_4,lVar25,local_168,1,1,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" { (if_statement "if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" if (parenthesized_expression "(*(long *)(param_3 + 0x340) < 1)" ( (binary_expression "*(long *)(param_3 + 0x340) < 1" (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" { (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));" do (compound_statement "{\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        }" { (expression_statement "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;" (assignment_expression "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (binary_expression "*(long *)(param_3 + 0x360) + lVar13 * 0x10" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + (binary_expression "lVar13 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (if_statement "if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" if (parenthesized_expression "(((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0))" ( (binary_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_3 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_3 + 0x360) + 4" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) ))) )) && (parenthesized_expression "(lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" ( (comma_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0" (assignment_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar24 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) , (binary_expression "*(int *)(lVar24 + 4) != 0" (pointer_expression "*(int *)(lVar24 + 4)" * (cast_expression "(int *)(lVar24 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 4)" ( (binary_expression "lVar24 + 4" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" { (expression_statement "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);" (assignment_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4)" (pointer_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" * (cast_expression "(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar24 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar24 + 8) * 4" identifier + (binary_expression "*(long *)(lVar24 + 8) * 4" (pointer_expression "*(long *)(lVar24 + 8)" * (cast_expression "(long *)(lVar24 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 8)" ( (binary_expression "lVar24 + 8" identifier + number_literal) )))) * number_literal)) )))) = (pointer_expression "*(undefined4 *)(lVar25 + lVar13 * 4)" * (cast_expression "(undefined4 *)(lVar25 + lVar13 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar13 * 4)" ( (binary_expression "lVar25 + lVar13 * 4" identifier + (binary_expression "lVar13 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 < *(long *)(param_3 + 0x340))" ( (binary_expression "lVar13 < *(long *)(param_3 + 0x340)" identifier < (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (expression_statement "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" identifier (argument_list "(param_4,lVar25,local_168,2,2,param_8)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "fVar12 = DAT_0041abe0;" (assignment_expression "fVar12 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar2 = DAT_0041abdc;" (assignment_expression "fVar2 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar9 = DAT_0041abd8;" (assignment_expression "fVar9 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "uVar11 = DAT_003f9c70;" (assignment_expression "uVar11 = DAT_003f9c70" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar13 != 0)" ( (binary_expression "lVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar24 < 1)" ( (binary_expression "lVar24 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" do (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" { (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar20 * 0x10)" ( (binary_expression "lVar18 + lVar20 * 0x10" identifier + (binary_expression "lVar20 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" identifier = (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" * (cast_expression "(uint *)(lVar18 + 4 + lVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4 + lVar17)" ( (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar17)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar17" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }" { (expression_statement "dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);" (assignment_expression "dVar34 = (double)*(float *)(lVar13 + lVar20 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar20 * 4)" * (cast_expression "(float *)(lVar13 + lVar20 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar20 * 4)" ( (binary_expression "lVar13 + lVar20 * 4" identifier + (binary_expression "lVar20 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);" (assignment_expression "dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar20 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar20 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar20 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar20 + lVar24) * 4" identifier + (binary_expression "(lVar20 + lVar24) * 4" (parenthesized_expression "(lVar20 + lVar24)" ( (binary_expression "lVar20 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (expression_statement "lVar22 = lVar20 + lVar24 * 2;" (assignment_expression "lVar22 = lVar20 + lVar24 * 2" identifier = (binary_expression "lVar20 + lVar24 * 2" identifier + (binary_expression "lVar24 * 2" identifier * number_literal))) ;) (expression_statement "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);" (assignment_expression "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 * 4)" ( (binary_expression "lVar13 + lVar22 * 4" identifier + (binary_expression "lVar22 * 4" identifier * number_literal)) )))))) ;) (expression_statement "dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);" (assignment_expression "dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" identifier = (cast_expression "(double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + (lVar22 + lVar24) * 4)" * (cast_expression "(float *)(lVar13 + (lVar22 + lVar24) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + (lVar22 + lVar24) * 4)" ( (binary_expression "lVar13 + (lVar22 + lVar24) * 4" identifier + (binary_expression "(lVar22 + lVar24) * 4" (parenthesized_expression "(lVar22 + lVar24)" ( (binary_expression "lVar22 + lVar24" identifier + identifier) )) * number_literal)) )))))) ;) (expression_statement "dVar28 = dVar26;" (assignment_expression "dVar28 = dVar26" identifier = identifier) ;) (if_statement "if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" if (parenthesized_expression "((uVar23 & 4) == 0)" ( (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" ( (binary_expression "uVar23 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }" { (expression_statement "local_160 = dVar26;" (assignment_expression "local_160 = dVar26" identifier = identifier) ;) (expression_statement "dVar36 = DAT_003f9608;" (assignment_expression "dVar36 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar35 = dVar26;" (assignment_expression "dVar35 = dVar26" identifier = identifier) ;) }) (else_clause "else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" else (compound_statement "{\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" { (if_statement "if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" if (parenthesized_expression "(*(int *)(lVar18 + 0x44) == 0)" ( (binary_expression "*(int *)(lVar18 + 0x44) == 0" (pointer_expression "*(int *)(lVar18 + 0x44)" * (cast_expression "(int *)(lVar18 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x44)" ( (binary_expression "lVar18 + 0x44" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }" { (expression_statement "local_160 = dVar26;" (assignment_expression "local_160 = dVar26" identifier = identifier) ;) (expression_statement "dVar35 = DAT_003f9608;" (assignment_expression "dVar35 = DAT_003f9608" identifier = identifier) ;) (expression_statement "fVar8 = _DAT_003fa400;" (assignment_expression "fVar8 = _DAT_003fa400" identifier = identifier) ;) }) (else_clause "else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" else (compound_statement "{\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" { (expression_statement "lVar22 = *(long *)(lVar18 + 0x48) * 4;" (assignment_expression "lVar22 = *(long *)(lVar18 + 0x48) * 4" identifier = (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;" (assignment_expression "local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 4)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 4)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 4" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 4" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;" (assignment_expression "dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" * (cast_expression "(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + *(long *)(lVar18 + 0x48) * 4)" ( (binary_expression "lVar13 + *(long *)(lVar18 + 0x48) * 4" identifier + (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" * (cast_expression "(long *)(lVar18 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 0x48)" ( (binary_expression "lVar18 + 0x48" identifier + number_literal) )))) * number_literal)) ))))) * identifier)) ;) (expression_statement "dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;" (assignment_expression "dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" identifier = (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 8)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 8)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 8" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 8" identifier * number_literal)) ))))) * identifier)) ;) (expression_statement "fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);" (assignment_expression "fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc)" identifier = (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 0xc)" * (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 0xc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 0xc)" ( (binary_expression "lVar13 + lVar22 + lVar24 * 0xc" (binary_expression "lVar13 + lVar22" identifier + identifier) + (binary_expression "lVar24 * 0xc" identifier * number_literal)) ))))) ;) }))) (expression_statement "dVar36 = (double)fVar8 * DAT_003f9c60;" (assignment_expression "dVar36 = (double)fVar8 * DAT_003f9c60" identifier = (binary_expression "(double)fVar8 * DAT_003f9c60" (cast_expression "(double)fVar8" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) }))) (expression_statement "dVar37 = param_1 - (double)lVar25;" (assignment_expression "dVar37 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar38 = param_2 - (double)local_168;" (assignment_expression "dVar38 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *(long *)(lVar24 + 8);" (assignment_expression "lVar5 = *(long *)(lVar24 + 8)" identifier = (pointer_expression "*(long *)(lVar24 + 8)" * (cast_expression "(long *)(lVar24 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 8)" ( (binary_expression "lVar24 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = *(long *)(lVar24 + 0x18);" (assignment_expression "lVar6 = *(long *)(lVar24 + 0x18)" identifier = (pointer_expression "*(long *)(lVar24 + 0x18)" * (cast_expression "(long *)(lVar24 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 0x18)" ( (binary_expression "lVar24 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar7 = *(long *)(lVar24 + 0x28);" (assignment_expression "lVar7 = *(long *)(lVar24 + 0x28)" identifier = (pointer_expression "*(long *)(lVar24 + 0x28)" * (cast_expression "(long *)(lVar24 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 0x28)" ( (binary_expression "lVar24 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar22 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "lVar24 = lVar13 + lVar22 * 0xc;" (assignment_expression "lVar24 = lVar13 + lVar22 * 0xc" identifier = (binary_expression "lVar13 + lVar22 * 0xc" identifier + (binary_expression "lVar22 * 0xc" identifier * number_literal))) ;) (expression_statement "lVar18 = lVar24 + lVar22 * -8;" (assignment_expression "lVar18 = lVar24 + lVar22 * -8" identifier = (binary_expression "lVar24 + lVar22 * -8" identifier + (binary_expression "lVar22 * -8" identifier * number_literal))) ;) (expression_statement "lVar22 = lVar18 + lVar22 * 4;" (assignment_expression "lVar22 = lVar18 + lVar22 * 4" identifier = (binary_expression "lVar18 + lVar22 * 4" identifier + (binary_expression "lVar22 * 4" identifier * number_literal))) ;) (if_statement "if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" if (parenthesized_expression "((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11))" ( (binary_expression "(double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" (cast_expression "(double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11)" ( (binary_expression "(ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11" (call_expression "(ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)))" ( (binary_expression "(double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" (cast_expression "(double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4))" ( (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar18 + lVar7 * 4)" * (cast_expression "(float *)(lVar18 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar7 * 4)" ( (binary_expression "lVar18 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar9 * *(float *)(lVar18 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar18 + lVar5 * 4)" * (cast_expression "(float *)(lVar18 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar5 * 4)" ( (binary_expression "lVar18 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar2 * *(float *)(lVar18 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar18 + lVar6 * 4)" * (cast_expression "(float *)(lVar18 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + lVar6 * 4)" ( (binary_expression "lVar18 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) )))))) ))) - (cast_expression "(double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" ( (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar22 + lVar7 * 4)" * (cast_expression "(float *)(lVar22 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + lVar7 * 4)" ( (binary_expression "lVar22 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar9 * *(float *)(lVar22 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar22 + lVar5 * 4)" * (cast_expression "(float *)(lVar22 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + lVar5 * 4)" ( (binary_expression "lVar22 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar2 * *(float *)(lVar22 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar22 + lVar6 * 4)" * (cast_expression "(float *)(lVar22 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + lVar6 * 4)" ( (binary_expression "lVar22 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) )))))) )))) ))) & identifier) ))) <= (cast_expression "(double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" ( (binary_expression "(ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11" (call_expression "(ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)))" ( (binary_expression "(double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" (cast_expression "(double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4))" ( (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)" (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4)" (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar13 + lVar6 * 4)" * (cast_expression "(float *)(lVar13 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar6 * 4)" ( (binary_expression "lVar13 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar9 * *(float *)(lVar13 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar13 + lVar5 * 4)" * (cast_expression "(float *)(lVar13 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar5 * 4)" ( (binary_expression "lVar13 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar12 * *(float *)(lVar13 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar13 + lVar7 * 4)" * (cast_expression "(float *)(lVar13 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar7 * 4)" ( (binary_expression "lVar13 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) )))))) ))) - (cast_expression "(double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" ( (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4)" identifier * (pointer_expression "*(float *)(lVar24 + lVar7 * 4)" * (cast_expression "(float *)(lVar24 + lVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + lVar7 * 4)" ( (binary_expression "lVar24 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal)) ))))) + (binary_expression "fVar2 * *(float *)(lVar24 + lVar6 * 4)" identifier * (pointer_expression "*(float *)(lVar24 + lVar6 * 4)" * (cast_expression "(float *)(lVar24 + lVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + lVar6 * 4)" ( (binary_expression "lVar24 + lVar6 * 4" identifier + (binary_expression "lVar6 * 4" identifier * number_literal)) )))))) + (binary_expression "fVar9 * *(float *)(lVar24 + lVar5 * 4)" identifier * (pointer_expression "*(float *)(lVar24 + lVar5 * 4)" * (cast_expression "(float *)(lVar24 + lVar5 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + lVar5 * 4)" ( (binary_expression "lVar24 + lVar5 * 4" identifier + (binary_expression "lVar5 * 4" identifier * number_literal)) )))))) )))) ))) & identifier) )))) )) (compound_statement "{\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }" { (expression_statement "dVar27 = DAT_003f9608 - dVar38;" (assignment_expression "dVar27 = DAT_003f9608 - dVar38" identifier = (binary_expression "DAT_003f9608 - dVar38" identifier - identifier)) ;) (if_statement "if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" if (parenthesized_expression "(dVar27 < dVar37)" ( (binary_expression "dVar27 < dVar37" identifier < identifier) )) (compound_statement "{\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }" { (expression_statement "dVar37 = DAT_003f9608 - dVar37;" (assignment_expression "dVar37 = DAT_003f9608 - dVar37" identifier = (binary_expression "DAT_003f9608 - dVar37" identifier - identifier)) ;) (expression_statement "dVar34 = (DAT_003f9608 - dVar37) - dVar27;" (assignment_expression "dVar34 = (DAT_003f9608 - dVar37) - dVar27" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar27" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;" (assignment_expression "dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27" identifier = (binary_expression "dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27" (binary_expression "dVar36 * dVar34 + dVar35 * dVar37" (binary_expression "dVar36 * dVar34" identifier * identifier) + (binary_expression "dVar35 * dVar37" identifier * identifier)) + (binary_expression "local_160 * dVar27" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                  dVar35 = dVar28 / DAT_003f9600;\n                }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" else (compound_statement "{\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" ( (binary_expression "(dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35" (parenthesized_expression "(dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37)" ( (binary_expression "dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37" (binary_expression "dVar34 * dVar31 + dVar32 * dVar27" (binary_expression "dVar34 * dVar31" identifier * identifier) + (binary_expression "dVar32 * dVar27" identifier * identifier)) + (binary_expression "dVar33 * dVar37" identifier * identifier)) )) * identifier) )))) ;) })) }) (else_clause "else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" else (compound_statement "{\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" { (expression_statement "dVar31 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar31 = (DAT_003f9608 - dVar37) - dVar38" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;" (assignment_expression "dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37" identifier = (binary_expression "dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37" (binary_expression "dVar28 * dVar31 + dVar35 * dVar38" (binary_expression "dVar28 * dVar31" identifier * identifier) + (binary_expression "dVar35 * dVar38" identifier * identifier)) + (binary_expression "local_160 * dVar37" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                  dVar35 = dVar28 / DAT_003f9600;\n                }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" else (compound_statement "{\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" ( (binary_expression "dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32)" identifier * (parenthesized_expression "(dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32)" ( (binary_expression "dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32" (binary_expression "dVar34 * dVar31 + dVar38 * dVar33" (binary_expression "dVar34 * dVar31" identifier * identifier) + (binary_expression "dVar38 * dVar33" identifier * identifier)) + (binary_expression "dVar37 * dVar32" identifier * identifier)) ))) )))) ;) })) }))) }) (else_clause "else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" else (if_statement "if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" if (parenthesized_expression "(dVar38 < dVar37)" ( (binary_expression "dVar38 < dVar37" identifier < identifier) )) (compound_statement "{\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }" { (expression_statement "dVar37 = DAT_003f9608 - dVar37;" (assignment_expression "dVar37 = DAT_003f9608 - dVar37" identifier = (binary_expression "DAT_003f9608 - dVar37" identifier - identifier)) ;) (expression_statement "dVar33 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar33 = (DAT_003f9608 - dVar37) - dVar38" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;" (assignment_expression "dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33" identifier = (binary_expression "dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33" (binary_expression "dVar36 * dVar38 + dVar28 * dVar37" (binary_expression "dVar36 * dVar38" identifier * identifier) + (binary_expression "dVar28 * dVar37" identifier * identifier)) + (binary_expression "local_160 * dVar33" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar35 = dVar28 / DAT_003f9600;\n              }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" else (compound_statement "{\n                dVar35 = DAT_003f9608 / dVar35;\n              }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" ( (binary_expression "(dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35" (parenthesized_expression "(dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31)" ( (binary_expression "dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31" (binary_expression "dVar33 * dVar32 + dVar37 * dVar34" (binary_expression "dVar33 * dVar32" identifier * identifier) + (binary_expression "dVar37 * dVar34" identifier * identifier)) + (binary_expression "dVar38 * dVar31" identifier * identifier)) )) * identifier) )))) ;) })) }) (else_clause "else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" else (compound_statement "{\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" { (expression_statement "dVar38 = DAT_003f9608 - dVar38;" (assignment_expression "dVar38 = DAT_003f9608 - dVar38" identifier = (binary_expression "DAT_003f9608 - dVar38" identifier - identifier)) ;) (expression_statement "dVar32 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar32 = (DAT_003f9608 - dVar37) - dVar38" identifier = (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" ( (binary_expression "DAT_003f9608 - dVar37" identifier - identifier) )) - identifier)) ;) (expression_statement "dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;" (assignment_expression "dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32" identifier = (binary_expression "dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32" (binary_expression "dVar36 * dVar37 + dVar28 * dVar38" (binary_expression "dVar36 * dVar37" identifier * identifier) + (binary_expression "dVar28 * dVar38" identifier * identifier)) + (binary_expression "dVar35 * dVar32" identifier * identifier))) ;) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar35)" ( (binary_expression "0.0 <= dVar35" number_literal <= identifier) )) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" { (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" if (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" ( (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar35 = dVar28 / DAT_003f9600;\n              }" { (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" identifier = (binary_expression "dVar28 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" else (compound_statement "{\n                dVar35 = DAT_003f9608 / dVar35;\n              }" { (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" identifier = (binary_expression "DAT_003f9608 / dVar35" identifier / identifier)) ;) }))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }" if (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" ( (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" * (cast_expression "(int *)(lVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 4)" ( (binary_expression "lVar17 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" identifier + (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" ( (binary_expression "dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31)" identifier * (parenthesized_expression "(dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31)" ( (binary_expression "dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31" (binary_expression "dVar32 * dVar33 + dVar34 * dVar38" (binary_expression "dVar32 * dVar33" identifier * identifier) + (binary_expression "dVar34 * dVar38" identifier * identifier)) + (binary_expression "dVar37 * dVar31" identifier * identifier)) ))) )))) ;) })) }))))) })) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar20 < lVar24)" ( (binary_expression "lVar20 < lVar24" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;" case number_literal : (if_statement "if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" if (parenthesized_expression "(param_1 < DAT_004294e8)" ( (binary_expression "param_1 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n      local_178 = DAT_004294e8;\n    }" { (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" else (if_statement "if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" if (parenthesized_expression "(DAT_004294f0 < param_1)" ( (binary_expression "DAT_004294f0 < param_1" identifier < identifier) )) (compound_statement "{\n      local_178 = DAT_004294f0;\n    }" { (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "dVar26 = floor(local_178 + DAT_003f9c28);" (assignment_expression "dVar26 = floor(local_178 + DAT_003f9c28)" identifier = (call_expression "floor(local_178 + DAT_003f9c28)" identifier (argument_list "(local_178 + DAT_003f9c28)" ( (binary_expression "local_178 + DAT_003f9c28" identifier + identifier) )))) ;) (if_statement "if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" if (parenthesized_expression "(param_2 < DAT_004294e8)" ( (binary_expression "param_2 < DAT_004294e8" identifier < identifier) )) (compound_statement "{\n      local_170 = DAT_004294e8;\n    }" { (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" identifier = identifier) ;) }) (else_clause "else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" else (if_statement "if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" if (parenthesized_expression "(DAT_004294f0 < param_2)" ( (binary_expression "DAT_004294f0 < param_2" identifier < identifier) )) (compound_statement "{\n      local_170 = DAT_004294f0;\n    }" { (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" identifier = identifier) ;) })))) (expression_statement "dVar28 = floor(local_170 + DAT_003f9c28);" (assignment_expression "dVar28 = floor(local_170 + DAT_003f9c28)" identifier = (call_expression "floor(local_170 + DAT_003f9c28)" identifier (argument_list "(local_170 + DAT_003f9c28)" ( (binary_expression "local_170 + DAT_003f9c28" identifier + identifier) )))) ;) (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" identifier = (call_expression "GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" identifier (argument_list "(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" ( identifier , (cast_expression "(long)dVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) , (cast_expression "(long)dVar28" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) , number_literal , number_literal , identifier )))) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" { (if_statement "if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" if (parenthesized_expression "(*(long *)(param_3 + 0x340) < 1)" ( (binary_expression "*(long *)(param_3 + 0x340) < 1" (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" { (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));" do (compound_statement "{\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        }" { (expression_statement "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;" (assignment_expression "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" ( (binary_expression "*(long *)(param_3 + 0x360) + lVar13 * 0x10" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + (binary_expression "lVar13 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (if_statement "if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" if (parenthesized_expression "(((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0))" ( (binary_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" ( (binary_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" * (cast_expression "(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x360) + 4 + lVar24)" ( (binary_expression "*(long *)(param_3 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_3 + 0x360) + 4" (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) ))) )) && (parenthesized_expression "(lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" ( (comma_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0" (assignment_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar24 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) , (binary_expression "*(int *)(lVar24 + 4) != 0" (pointer_expression "*(int *)(lVar24 + 4)" * (cast_expression "(int *)(lVar24 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 4)" ( (binary_expression "lVar24 + 4" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" { (expression_statement "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);" (assignment_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4)" (pointer_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" * (cast_expression "(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar24 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar24 + 8) * 4" identifier + (binary_expression "*(long *)(lVar24 + 8) * 4" (pointer_expression "*(long *)(lVar24 + 8)" * (cast_expression "(long *)(lVar24 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar24 + 8)" ( (binary_expression "lVar24 + 8" identifier + number_literal) )))) * number_literal)) )))) = (pointer_expression "*(undefined4 *)(lVar25 + lVar13 * 4)" * (cast_expression "(undefined4 *)(lVar25 + lVar13 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar13 * 4)" ( (binary_expression "lVar25 + lVar13 * 4" identifier + (binary_expression "lVar13 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 < *(long *)(param_3 + 0x340))" ( (binary_expression "lVar13 < *(long *)(param_3 + 0x340)" identifier < (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) })) (break_statement "break;" break ;)) (case_statement "case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" case number_literal : (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier = (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" identifier (argument_list "(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" ( identifier , (binary_expression "lVar25 + -1" identifier + number_literal) , (binary_expression "local_168 + -1" identifier + number_literal) , number_literal , number_literal , identifier ))))) ;) (expression_statement "dVar28 = DAT_0041d760;" (assignment_expression "dVar28 = DAT_0041d760" identifier = identifier) ;) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" identifier = identifier) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" if (parenthesized_expression "(pfVar15 != (float *)0x0)" ( (binary_expression "pfVar15 != (float *)0x0" identifier != (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" { (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" if (parenthesized_expression "(lVar13 < 1)" ( (binary_expression "lVar13 < 1" identifier < number_literal) )) (compound_statement "{\n        uVar14 = 1;\n      }" { (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" else (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" { (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" identifier = number_literal) ;) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" identifier = identifier) ;) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" do (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" { (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" identifier = (pointer_expression "*(long *)(param_3 + 0x360)" * (cast_expression "(long *)(param_3 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x360)" ( (binary_expression "param_3 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;" (assignment_expression "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" identifier = (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + lVar24 * 0x10)" ( (binary_expression "lVar20 + lVar24 * 0x10" identifier + (binary_expression "lVar24 * 0x10" identifier * number_literal)) )))) * number_literal)) ;) (expression_statement "uVar23 = *(uint *)(lVar20 + 4 + lVar18);" (assignment_expression "uVar23 = *(uint *)(lVar20 + 4 + lVar18)" identifier = (pointer_expression "*(uint *)(lVar20 + 4 + lVar18)" * (cast_expression "(uint *)(lVar20 + 4 + lVar18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 4 + lVar18)" ( (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" identifier + number_literal) + identifier) ))))) ;) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }" if (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0))" ( (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" ( (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" * (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" ( (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }" { (expression_statement "uVar23 = uVar23 & 4;" (assignment_expression "uVar23 = uVar23 & 4" identifier = (binary_expression "uVar23 & 4" identifier & number_literal)) ;) (if_statement "if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }" { (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" identifier = number_literal) ;) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" identifier = identifier) ;) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);" do (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" { (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" identifier [ identifier ]) = (cast_expression "(double)*pfVar19" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*pfVar19" * identifier))) ;) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" identifier = (binary_expression "lVar20 + 1" identifier + number_literal)) ;) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" identifier = (binary_expression "pfVar19 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar20 != 0x10)" ( (binary_expression "lVar20 != 0x10" identifier != number_literal) )) ;) }) (else_clause "else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" else (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" { (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" identifier = (pointer_expression "*(int *)(lVar20 + 0x44)" * (cast_expression "(int *)(lVar20 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x44)" ( (binary_expression "lVar20 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" identifier = number_literal) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);" do (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" { (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" { (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier = (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" identifier [ (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" identifier + (pointer_expression "*(long *)(lVar20 + 0x48)" * (cast_expression "(long *)(lVar20 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) ))))) ])) ;) })) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier)) ;) (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" identifier [ identifier ]) = (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (cast_expression "(double)pfVar21[lVar22]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "pfVar21[lVar22]" identifier [ identifier ])))) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" identifier = (binary_expression "lVar22 + lVar13" identifier + identifier)) ;) }) while (parenthesized_expression "(lVar17 != 0x10)" ( (binary_expression "lVar17 != 0x10" identifier != number_literal) )) ;) }))) (expression_statement "dVar32 = param_1 - (double)lVar25;" (assignment_expression "dVar32 = param_1 - (double)lVar25" identifier = (binary_expression "param_1 - (double)lVar25" identifier - (cast_expression "(double)lVar25" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar31 = dVar26 - dVar32;" (assignment_expression "dVar31 = dVar26 - dVar32" identifier = (binary_expression "dVar26 - dVar32" identifier - identifier)) ;) (expression_statement "dVar33 = dVar32 * dVar28 * dVar32 * dVar32;" (assignment_expression "dVar33 = dVar32 * dVar28 * dVar32 * dVar32" identifier = (binary_expression "dVar32 * dVar28 * dVar32 * dVar32" (binary_expression "dVar32 * dVar28 * dVar32" (binary_expression "dVar32 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar34 = dVar31 * dVar28 * dVar31 * dVar31;" (assignment_expression "dVar34 = dVar31 * dVar28 * dVar31 * dVar31" identifier = (binary_expression "dVar31 * dVar28 * dVar31 * dVar31" (binary_expression "dVar31 * dVar28 * dVar31" (binary_expression "dVar31 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);" (assignment_expression "dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34)" identifier = (binary_expression "(dVar31 - dVar34) + (dVar33 - dVar34)" (parenthesized_expression "(dVar31 - dVar34)" ( (binary_expression "dVar31 - dVar34" identifier - identifier) )) + (parenthesized_expression "(dVar33 - dVar34)" ( (binary_expression "dVar33 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);" (assignment_expression "dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34)" identifier = (binary_expression "(dVar32 - dVar33) - (dVar33 - dVar34)" (parenthesized_expression "(dVar32 - dVar33)" ( (binary_expression "dVar32 - dVar33" identifier - identifier) )) - (parenthesized_expression "(dVar33 - dVar34)" ( (binary_expression "dVar33 - dVar34" identifier - identifier) )))) ;) (expression_statement "dVar32 = param_2 - (double)local_168;" (assignment_expression "dVar32 = param_2 - (double)local_168" identifier = (binary_expression "param_2 - (double)local_168" identifier - (cast_expression "(double)local_168" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "dVar37 = dVar26 - dVar32;" (assignment_expression "dVar37 = dVar26 - dVar32" identifier = (binary_expression "dVar26 - dVar32" identifier - identifier)) ;) (expression_statement "dVar38 = dVar32 * dVar28 * dVar32 * dVar32;" (assignment_expression "dVar38 = dVar32 * dVar28 * dVar32 * dVar32" identifier = (binary_expression "dVar32 * dVar28 * dVar32 * dVar32" (binary_expression "dVar32 * dVar28 * dVar32" (binary_expression "dVar32 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar31 = dVar37 * dVar28 * dVar37 * dVar37;" (assignment_expression "dVar31 = dVar37 * dVar28 * dVar37 * dVar37" identifier = (binary_expression "dVar37 * dVar28 * dVar37 * dVar37" (binary_expression "dVar37 * dVar28 * dVar37" (binary_expression "dVar37 * dVar28" identifier * identifier) * identifier) * identifier)) ;) (expression_statement "dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);" (assignment_expression "dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31)" identifier = (binary_expression "(dVar37 - dVar31) + (dVar38 - dVar31)" (parenthesized_expression "(dVar37 - dVar31)" ( (binary_expression "dVar37 - dVar31" identifier - identifier) )) + (parenthesized_expression "(dVar38 - dVar31)" ( (binary_expression "dVar38 - dVar31" identifier - identifier) )))) ;) (expression_statement "dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);" (assignment_expression "dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31)" identifier = (binary_expression "(dVar32 - dVar38) - (dVar38 - dVar31)" (parenthesized_expression "(dVar32 - dVar38)" ( (binary_expression "dVar32 - dVar38" identifier - identifier) )) - (parenthesized_expression "(dVar38 - dVar31)" ( (binary_expression "dVar38 - dVar31" identifier - identifier) )))) ;) (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }" { (expression_statement "dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;" (assignment_expression "dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" identifier = (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27" (parenthesized_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7])" ( (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]" (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5]" (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4]" (binary_expression "dVar36 * local_148[6]" identifier * (subscript_expression "local_148[6]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[4]" identifier * (subscript_expression "local_148[4]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[5]" identifier * (subscript_expression "local_148[5]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[7]" identifier * (subscript_expression "local_148[7]" identifier [ number_literal ]))) )) * identifier) + (binary_expression "(dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31" (parenthesized_expression "(dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2])" ( (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]" (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1]" (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0]" (binary_expression "dVar33 * local_148[3]" identifier * (subscript_expression "local_148[3]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[0]" identifier * (subscript_expression "local_148[0]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[1]" identifier * (subscript_expression "local_148[1]" identifier [ number_literal ]))) + (binary_expression "dVar36 * local_148[2]" identifier * (subscript_expression "local_148[2]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37" (parenthesized_expression "(dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb])" ( (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]" (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9]" (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8]" (binary_expression "dVar36 * local_148[10]" identifier * (subscript_expression "local_148[10]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[8]" identifier * (subscript_expression "local_148[8]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[9]" identifier * (subscript_expression "local_148[9]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[0xb]" identifier * (subscript_expression "local_148[0xb]" identifier [ number_literal ]))) )) * identifier)) + (binary_expression "(dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" (parenthesized_expression "(dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf])" ( (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]" (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]" (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc]" (binary_expression "dVar36 * local_148[0xe]" identifier * (subscript_expression "local_148[0xe]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_148[0xc]" identifier * (subscript_expression "local_148[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_148[0xd]" identifier * (subscript_expression "local_148[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_148[0xf]" identifier * (subscript_expression "local_148[0xf]" identifier [ number_literal ]))) )) * identifier))) ;) (expression_statement "dVar30 = DAT_003f9c68;" (assignment_expression "dVar30 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }" if (parenthesized_expression "(0.0 <= dVar32)" ( (binary_expression "0.0 <= dVar32" number_literal <= identifier) )) (compound_statement "{\n                dVar30 = DAT_003f9608;\n              }" { (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }" if (parenthesized_expression "(dVar32 * dVar30 < DAT_003f9600)" ( (binary_expression "dVar32 * dVar30 < DAT_003f9600" (binary_expression "dVar32 * dVar30" identifier * identifier) < identifier) )) (compound_statement "{\n                dVar32 = dVar30 / DAT_003f9600;\n              }" { (expression_statement "dVar32 = dVar30 / DAT_003f9600;" (assignment_expression "dVar32 = dVar30 / DAT_003f9600" identifier = (binary_expression "dVar30 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }" else (compound_statement "{\n                dVar32 = DAT_003f9608 / dVar32;\n              }" { (expression_statement "dVar32 = DAT_003f9608 / dVar32;" (assignment_expression "dVar32 = DAT_003f9608 / dVar32" identifier = (binary_expression "DAT_003f9608 / dVar32" identifier / identifier)) ;) }))) })) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" identifier = (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" identifier + (pointer_expression "*(long *)(param_5 + 0x360)" * (cast_expression "(long *)(param_5 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x360)" ( (binary_expression "param_5 + 0x360" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }" if (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" ( (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" * (cast_expression "(int *)(lVar18 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 4)" ( (binary_expression "lVar18 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }" { (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" * (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" ( (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" identifier + (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" * (cast_expression "(long *)(lVar18 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar18 + 8)" ( (binary_expression "lVar18 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" ( (binary_expression "(dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32" (parenthesized_expression "(dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38)" ( (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7])" identifier * (parenthesized_expression "(dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7])" ( (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]" (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5]" (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4]" (binary_expression "dVar36 * local_c8[6]" identifier * (subscript_expression "local_c8[6]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_c8[4]" identifier * (subscript_expression "local_c8[4]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[5]" identifier * (subscript_expression "local_c8[5]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[7]" identifier * (subscript_expression "local_c8[7]" identifier [ number_literal ]))) ))) + (binary_expression "dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" identifier * (parenthesized_expression "(dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" ( (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]" (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1]" (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0]" (binary_expression "dVar36 * local_c8[2]" identifier * (subscript_expression "local_c8[2]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_c8[0]" identifier * (subscript_expression "local_c8[0]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[1]" identifier * (subscript_expression "local_c8[1]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[3]" identifier * (subscript_expression "local_c8[3]" identifier [ number_literal ]))) )))) + (binary_expression "dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" identifier * (parenthesized_expression "(dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" ( (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]" (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8]" (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10]" (binary_expression "dVar33 * local_c8[0xb]" identifier * (subscript_expression "local_c8[0xb]" identifier [ number_literal ])) + (binary_expression "dVar36 * local_c8[10]" identifier * (subscript_expression "local_c8[10]" identifier [ number_literal ]))) + (binary_expression "dVar34 * local_c8[8]" identifier * (subscript_expression "local_c8[8]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[9]" identifier * (subscript_expression "local_c8[9]" identifier [ number_literal ]))) )))) + (binary_expression "(dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38" (parenthesized_expression "(dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf])" ( (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]" (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]" (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc]" (binary_expression "dVar36 * local_c8[0xe]" identifier * (subscript_expression "local_c8[0xe]" identifier [ number_literal ])) + (binary_expression "dVar34 * local_c8[0xc]" identifier * (subscript_expression "local_c8[0xc]" identifier [ number_literal ]))) + (binary_expression "dVar35 * local_c8[0xd]" identifier * (subscript_expression "local_c8[0xd]" identifier [ number_literal ]))) + (binary_expression "dVar33 * local_c8[0xf]" identifier * (subscript_expression "local_c8[0xf]" identifier [ number_literal ]))) )) * identifier)) )) * identifier) )))) ;) })) })) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" identifier = (binary_expression "lVar24 + 1" identifier + number_literal)) ;) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" identifier = (pointer_expression "*(long *)(param_3 + 0x340)" * (cast_expression "(long *)(param_3 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x340)" ( (binary_expression "param_3 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" identifier = (binary_expression "pfVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar24 < lVar13)" ( (binary_expression "lVar24 < lVar13" identifier < identifier) )) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) }))) })) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar14;\n  }" { (return_statement "return uVar14;" return identifier ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) | (binary_expression (unary_expression ~ (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) | (binary_expression (unary_expression ~ (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (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 IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement default : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) ))) + (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) )))) )) * IDENT) )))) ;) })) }) (else_clause else (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) ;) (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 = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT)) ))))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT)) ))))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) )) * IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) * IDENT) + (binary_expression IDENT * IDENT)) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) | (binary_expression (unary_expression ~ (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * IDENT) * IDENT) + (binary_expression (binary_expression IDENT * IDENT) * IDENT)) ))) + (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) * IDENT) * IDENT) + (binary_expression (binary_expression IDENT * IDENT) * IDENT)) )))) ))) )))) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & IDENT) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) )))) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ))) | (binary_expression (unary_expression ~ IDENT) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & IDENT) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) )))) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ))) | (binary_expression (unary_expression ~ IDENT) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (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 { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , 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 = LIT) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (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 + (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT - IDENT) != LIT) && (binary_expression IDENT <= IDENT)) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT)) ))))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) ))))) | (binary_expression (unary_expression ~ (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) ))))) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT * IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , 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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) != LIT) ))) )) (compound_statement { (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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 [ (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ])) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (subscript_expression IDENT [ LIT ]))) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) )))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , LIT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (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 = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 [ (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ])) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (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 (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT)) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT)) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) ))) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT)) + (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )))) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT)) )) * IDENT) )))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , 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 = IDENT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT)) ))))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT)) ))))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT)) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ))) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) )))) ))) & IDENT) ))) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ))) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) )))) ))) & IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) )) * IDENT) )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) ))) )))) ;) })) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) )) * IDENT) )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) ))) )))) ;) })) }))))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , LIT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (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 = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 [ (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ])) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) * IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) * IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) * IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) * IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (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 (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT)) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT)) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) ))) + (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )))) + (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )))) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) )) * IDENT)) )) * IDENT) )))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined8\nInterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)\n\n{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "undefined8") (function_declarator "InterpolatePixelChannels\n          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)" (identifier "InterpolatePixelChannels") (parameter_list "(double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,\n          long param_7,undefined8 param_8)" (( "(") (parameter_declaration "double param_1" (primitive_type "double") (identifier "param_1")) (, ",") (parameter_declaration "double param_2" (primitive_type "double") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "long param_5" (sized_type_specifier "long" (long "long")) (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "long param_7" (sized_type_specifier "long" (long "long")) (identifier "param_7")) (, ",") (parameter_declaration "undefined8 param_8" (type_identifier "undefined8") (identifier "param_8")) () ")"))) (compound_statement "{\n  double *pdVar1;\n  float fVar2;\n  int iVar3;\n  int iVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  float fVar8;\n  float fVar9;\n  double dVar10;\n  ulong uVar11;\n  float fVar12;\n  long lVar13;\n  undefined8 uVar14;\n  float *pfVar15;\n  double *pdVar16;\n  long lVar17;\n  long lVar18;\n  float *pfVar19;\n  long lVar20;\n  float *pfVar21;\n  long lVar22;\n  uint uVar23;\n  long lVar24;\n  long lVar25;\n  long in_FS_OFFSET;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  double dVar37;\n  double dVar38;\n  double local_178;\n  double local_170;\n  long local_168;\n  double local_160;\n  double local_148 [16];\n  double local_c8 [17];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_3 == 0) {\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }\n  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }\n  if (param_4 == 0) {\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }\n  dVar26 = floor(dVar26);\n  lVar25 = (long)dVar26;\n  dVar26 = DAT_004294e8;\n  if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }\n  dVar26 = floor(dVar26);\n  local_168 = (long)dVar26;\n  if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }\n  local_178 = param_1;\n  local_170 = param_2;\n  switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "double *pdVar1;" (primitive_type "double") (pointer_declarator "*pdVar1" (* "*") (identifier "pdVar1")) (; ";")) (declaration "float fVar2;" (primitive_type "float") (identifier "fVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "float fVar8;" (primitive_type "float") (identifier "fVar8") (; ";")) (declaration "float fVar9;" (primitive_type "float") (identifier "fVar9") (; ";")) (declaration "double dVar10;" (primitive_type "double") (identifier "dVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "float fVar12;" (primitive_type "float") (identifier "fVar12") (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (declaration "undefined8 uVar14;" (type_identifier "undefined8") (identifier "uVar14") (; ";")) (declaration "float *pfVar15;" (primitive_type "float") (pointer_declarator "*pfVar15" (* "*") (identifier "pfVar15")) (; ";")) (declaration "double *pdVar16;" (primitive_type "double") (pointer_declarator "*pdVar16" (* "*") (identifier "pdVar16")) (; ";")) (declaration "long lVar17;" (sized_type_specifier "long" (long "long")) (identifier "lVar17") (; ";")) (declaration "long lVar18;" (sized_type_specifier "long" (long "long")) (identifier "lVar18") (; ";")) (declaration "float *pfVar19;" (primitive_type "float") (pointer_declarator "*pfVar19" (* "*") (identifier "pfVar19")) (; ";")) (declaration "long lVar20;" (sized_type_specifier "long" (long "long")) (identifier "lVar20") (; ";")) (declaration "float *pfVar21;" (primitive_type "float") (pointer_declarator "*pfVar21" (* "*") (identifier "pfVar21")) (; ";")) (declaration "long lVar22;" (sized_type_specifier "long" (long "long")) (identifier "lVar22") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "long lVar24;" (sized_type_specifier "long" (long "long")) (identifier "lVar24") (; ";")) (declaration "long lVar25;" (sized_type_specifier "long" (long "long")) (identifier "lVar25") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "double dVar26;" (primitive_type "double") (identifier "dVar26") (; ";")) (declaration "double dVar27;" (primitive_type "double") (identifier "dVar27") (; ";")) (declaration "double dVar28;" (primitive_type "double") (identifier "dVar28") (; ";")) (declaration "double dVar29;" (primitive_type "double") (identifier "dVar29") (; ";")) (declaration "double dVar30;" (primitive_type "double") (identifier "dVar30") (; ";")) (declaration "double dVar31;" (primitive_type "double") (identifier "dVar31") (; ";")) (declaration "double dVar32;" (primitive_type "double") (identifier "dVar32") (; ";")) (declaration "double dVar33;" (primitive_type "double") (identifier "dVar33") (; ";")) (declaration "double dVar34;" (primitive_type "double") (identifier "dVar34") (; ";")) (declaration "double dVar35;" (primitive_type "double") (identifier "dVar35") (; ";")) (declaration "double dVar36;" (primitive_type "double") (identifier "dVar36") (; ";")) (declaration "double dVar37;" (primitive_type "double") (identifier "dVar37") (; ";")) (declaration "double dVar38;" (primitive_type "double") (identifier "dVar38") (; ";")) (declaration "double local_178;" (primitive_type "double") (identifier "local_178") (; ";")) (declaration "double local_170;" (primitive_type "double") (identifier "local_170") (; ";")) (declaration "long local_168;" (sized_type_specifier "long" (long "long")) (identifier "local_168") (; ";")) (declaration "double local_160;" (primitive_type "double") (identifier "local_160") (; ";")) (declaration "double local_148 [16];" (primitive_type "double") (array_declarator "local_148 [16]" (identifier "local_148") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "double local_c8 [17];" (primitive_type "double") (array_declarator "local_c8 [17]" (identifier "local_c8") ([ "[") (number_literal "17") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (param_3 == 0) {\n                    \n    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\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("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;\n  }" ({ "{") (expression_statement "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")\n    ;" (call_expression "__assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" (identifier "__assert_fail") (argument_list "("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")" (( "(") (string_literal ""source != (Image *) NULL"" (" """) (string_content "source != (Image *) NULL") (" """)) (, ",") (string_literal ""MagickCore/pixel.c"" (" """) (string_content "MagickCore/pixel.c") (" """)) (, ",") (number_literal "0x134f") (, ",") (string_literal ""InterpolatePixelChannels"" (" """) (string_content "InterpolatePixelChannels") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(param_3 + 0x3450) != 0xabacadab) {\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" (if "if") (parenthesized_expression "(*(long *)(param_3 + 0x3450) != 0xabacadab)" (( "(") (binary_expression "*(long *)(param_3 + 0x3450) != 0xabacadab" (pointer_expression "*(long *)(param_3 + 0x3450)" (* "*") (cast_expression "(long *)(param_3 + 0x3450)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x3450)" (( "(") (binary_expression "param_3 + 0x3450" (identifier "param_3") (+ "+") (number_literal "0x3450")) () ")")))) (!= "!=") (number_literal "0xabacadab")) () ")")) (compound_statement "{\n                    \n    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");\n  }" ({ "{") (expression_statement "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" (identifier "__assert_fail") (argument_list "("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,\n                  "InterpolatePixelChannels")" (( "(") (string_literal ""source->signature == MagickCoreSignature"" (" """) (string_content "source->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""MagickCore/pixel.c"" (" """) (string_content "MagickCore/pixel.c") (" """)) (, ",") (number_literal "0x1350") (, ",") (string_literal ""InterpolatePixelChannels"" (" """) (string_content "InterpolatePixelChannels") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 == 0) {\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");\n  }" ({ "{") (expression_statement "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels");" (call_expression "__assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" (identifier "__assert_fail") (argument_list "("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,\n                  "InterpolatePixelChannels")" (( "(") (string_literal ""source_view != (CacheView *) NULL"" (" """) (string_content "source_view != (CacheView *) NULL") (" """)) (, ",") (string_literal ""MagickCore/pixel.c"" (" """) (string_content "MagickCore/pixel.c") (" """)) (, ",") (number_literal "0x1351") (, ",") (string_literal ""InterpolatePixelChannels"" (" """) (string_content "InterpolatePixelChannels") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "dVar26 = DAT_004294e8;" (assignment_expression "dVar26 = DAT_004294e8" (identifier "dVar26") (= "=") (identifier "DAT_004294e8")) (; ";")) (if_statement "if (DAT_004294e8 <= param_1) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }" (if "if") (parenthesized_expression "(DAT_004294e8 <= param_1)" (( "(") (binary_expression "DAT_004294e8 <= param_1" (identifier "DAT_004294e8") (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);\n  }" ({ "{") (expression_statement "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);" (assignment_expression "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" (identifier "dVar26") (= "=") (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1)" (( "(") (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |\n                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1)" (cast_expression "(ulong)DAT_004294f0" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_004294f0")) (& "&") (unary_expression "-(ulong)(DAT_004294f0 < param_1)" (- "-") (call_expression "(ulong)(DAT_004294f0 < param_1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(DAT_004294f0 < param_1)" (( "(") (binary_expression "DAT_004294f0 < param_1" (identifier "DAT_004294f0") (< "<") (identifier "param_1")) () ")"))))) (| "|") (binary_expression "~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1" (unary_expression "~-(ulong)(DAT_004294f0 < param_1)" (~ "~") (unary_expression "-(ulong)(DAT_004294f0 < param_1)" (- "-") (call_expression "(ulong)(DAT_004294f0 < param_1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(DAT_004294f0 < param_1)" (( "(") (binary_expression "DAT_004294f0 < param_1" (identifier "DAT_004294f0") (< "<") (identifier "param_1")) () ")"))))) (& "&") (cast_expression "(ulong)param_1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_1")))) () ")")))) (; ";")) (} "}"))) (expression_statement "dVar26 = floor(dVar26);" (assignment_expression "dVar26 = floor(dVar26)" (identifier "dVar26") (= "=") (call_expression "floor(dVar26)" (identifier "floor") (argument_list "(dVar26)" (( "(") (identifier "dVar26") () ")")))) (; ";")) (expression_statement "lVar25 = (long)dVar26;" (assignment_expression "lVar25 = (long)dVar26" (identifier "lVar25") (= "=") (cast_expression "(long)dVar26" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "dVar26"))) (; ";")) (expression_statement "dVar26 = DAT_004294e8;" (assignment_expression "dVar26 = DAT_004294e8" (identifier "dVar26") (= "=") (identifier "DAT_004294e8")) (; ";")) (if_statement "if (DAT_004294e8 <= param_2) {\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }" (if "if") (parenthesized_expression "(DAT_004294e8 <= param_2)" (( "(") (binary_expression "DAT_004294e8 <= param_2" (identifier "DAT_004294e8") (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);\n  }" ({ "{") (expression_statement "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);" (assignment_expression "dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" (identifier "dVar26") (= "=") (cast_expression "(double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2)" (( "(") (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |\n                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2" (binary_expression "(ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2)" (cast_expression "(ulong)DAT_004294f0" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_004294f0")) (& "&") (unary_expression "-(ulong)(DAT_004294f0 < param_2)" (- "-") (call_expression "(ulong)(DAT_004294f0 < param_2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(DAT_004294f0 < param_2)" (( "(") (binary_expression "DAT_004294f0 < param_2" (identifier "DAT_004294f0") (< "<") (identifier "param_2")) () ")"))))) (| "|") (binary_expression "~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2" (unary_expression "~-(ulong)(DAT_004294f0 < param_2)" (~ "~") (unary_expression "-(ulong)(DAT_004294f0 < param_2)" (- "-") (call_expression "(ulong)(DAT_004294f0 < param_2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(DAT_004294f0 < param_2)" (( "(") (binary_expression "DAT_004294f0 < param_2" (identifier "DAT_004294f0") (< "<") (identifier "param_2")) () ")"))))) (& "&") (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")))) () ")")))) (; ";")) (} "}"))) (expression_statement "dVar26 = floor(dVar26);" (assignment_expression "dVar26 = floor(dVar26)" (identifier "dVar26") (= "=") (call_expression "floor(dVar26)" (identifier "floor") (argument_list "(dVar26)" (( "(") (identifier "dVar26") () ")")))) (; ";")) (expression_statement "local_168 = (long)dVar26;" (assignment_expression "local_168 = (long)dVar26" (identifier "local_168") (= "=") (cast_expression "(long)dVar26" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "dVar26"))) (; ";")) (if_statement "if (param_6 == 0) {\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }" (if "if") (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_6 = *(int *)(param_3 + 0x2f8);\n  }" ({ "{") (expression_statement "param_6 = *(int *)(param_3 + 0x2f8);" (assignment_expression "param_6 = *(int *)(param_3 + 0x2f8)" (identifier "param_6") (= "=") (pointer_expression "*(int *)(param_3 + 0x2f8)" (* "*") (cast_expression "(int *)(param_3 + 0x2f8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2f8)" (( "(") (binary_expression "param_3 + 0x2f8" (identifier "param_3") (+ "+") (number_literal "0x2f8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_178 = param_1;" (assignment_expression "local_178 = param_1" (identifier "local_178") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_170 = param_2;" (assignment_expression "local_170 = param_2" (identifier "local_170") (= "=") (identifier "param_2")) (; ";")) (switch_statement "switch(param_6) {\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }" (switch "switch") (parenthesized_expression "(param_6)" (( "(") (identifier "param_6") () ")")) (compound_statement "{\n  default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 1:\n  case 2:\n  case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;\n  case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n  }" ({ "{") (case_statement "default:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" (default "default") (: ":") (expression_statement "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" (identifier "lVar13") (= "=") (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,lVar25,local_168,2,2,param_8)" (( "(") (identifier "param_4") (, ",") (identifier "lVar25") (, ",") (identifier "local_168") (, ",") (number_literal "2") (, ",") (number_literal "2") (, ",") (identifier "param_8") () ")")))) (; ";")) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" (identifier "dVar26") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(lVar13 != 0)" (( "(") (binary_expression "lVar13 != 0" (identifier "lVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" ({ "{") (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" (identifier "lVar24") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(lVar24 < 1)" (( "(") (binary_expression "lVar24 < 1" (identifier "lVar24") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" (identifier "lVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" (do "do") (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" ({ "{") (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" (identifier "lVar18") (= "=") (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (identifier "lVar17") (= "=") (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + lVar20 * 0x10)" (( "(") (binary_expression "lVar18 + lVar20 * 0x10" (identifier "lVar18") (+ "+") (binary_expression "lVar20 * 0x10" (identifier "lVar20") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" (* "*") (cast_expression "(uint *)(lVar18 + 4 + lVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 4 + lVar17)" (( "(") (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" (identifier "lVar18") (+ "+") (number_literal "4")) (+ "+") (identifier "lVar17")) () ")"))))) (; ";")) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (= "=") (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (expression_statement "iVar3 = *(int *)(lVar17 + 4);" (assignment_expression "iVar3 = *(int *)(lVar17 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar17 + 4)" (* "*") (cast_expression "(int *)(lVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 4)" (( "(") (binary_expression "lVar17 + 4" (identifier "lVar17") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((uVar23 != 0) && (iVar3 != 0)) {\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }" (if "if") (parenthesized_expression "((uVar23 != 0) && (iVar3 != 0))" (( "(") (binary_expression "(uVar23 != 0) && (iVar3 != 0)" (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            dVar31 = param_1 - (double)lVar25;\n            dVar34 = param_2 - (double)local_168;\n            dVar32 = dVar26 - dVar31;\n            dVar37 = dVar26 - dVar34;\n            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }\n          }" ({ "{") (expression_statement "dVar31 = param_1 - (double)lVar25;" (assignment_expression "dVar31 = param_1 - (double)lVar25" (identifier "dVar31") (= "=") (binary_expression "param_1 - (double)lVar25" (identifier "param_1") (- "-") (cast_expression "(double)lVar25" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar25")))) (; ";")) (expression_statement "dVar34 = param_2 - (double)local_168;" (assignment_expression "dVar34 = param_2 - (double)local_168" (identifier "dVar34") (= "=") (binary_expression "param_2 - (double)local_168" (identifier "param_2") (- "-") (cast_expression "(double)local_168" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "local_168")))) (; ";")) (expression_statement "dVar32 = dVar26 - dVar31;" (assignment_expression "dVar32 = dVar26 - dVar31" (identifier "dVar32") (= "=") (binary_expression "dVar26 - dVar31" (identifier "dVar26") (- "-") (identifier "dVar31"))) (; ";")) (expression_statement "dVar37 = dVar26 - dVar34;" (assignment_expression "dVar37 = dVar26 - dVar34" (identifier "dVar37") (= "=") (binary_expression "dVar26 - dVar34" (identifier "dVar26") (- "-") (identifier "dVar34"))) (; ";")) (expression_statement "dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);" (assignment_expression "dVar28 = (double)*(float *)(lVar13 + lVar20 * 4)" (identifier "dVar28") (= "=") (cast_expression "(double)*(float *)(lVar13 + lVar20 * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar20 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar20 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar20 * 4)" (( "(") (binary_expression "lVar13 + lVar20 * 4" (identifier "lVar13") (+ "+") (binary_expression "lVar20 * 4" (identifier "lVar20") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);" (assignment_expression "dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" (identifier "dVar35") (= "=") (cast_expression "(double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + (lVar20 + lVar24) * 4)" (* "*") (cast_expression "(float *)(lVar13 + (lVar20 + lVar24) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + (lVar20 + lVar24) * 4)" (( "(") (binary_expression "lVar13 + (lVar20 + lVar24) * 4" (identifier "lVar13") (+ "+") (binary_expression "(lVar20 + lVar24) * 4" (parenthesized_expression "(lVar20 + lVar24)" (( "(") (binary_expression "lVar20 + lVar24" (identifier "lVar20") (+ "+") (identifier "lVar24")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "lVar22 = lVar20 + lVar24 * 2;" (assignment_expression "lVar22 = lVar20 + lVar24 * 2" (identifier "lVar22") (= "=") (binary_expression "lVar20 + lVar24 * 2" (identifier "lVar20") (+ "+") (binary_expression "lVar24 * 2" (identifier "lVar24") (* "*") (number_literal "2")))) (; ";")) (expression_statement "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);" (assignment_expression "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4)" (identifier "dVar33") (= "=") (cast_expression "(double)*(float *)(lVar13 + lVar22 * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar22 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 * 4)" (( "(") (binary_expression "lVar13 + lVar22 * 4" (identifier "lVar13") (+ "+") (binary_expression "lVar22 * 4" (identifier "lVar22") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);" (assignment_expression "dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" (identifier "dVar36") (= "=") (cast_expression "(double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + (lVar22 + lVar24) * 4)" (* "*") (cast_expression "(float *)(lVar13 + (lVar22 + lVar24) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + (lVar22 + lVar24) * 4)" (( "(") (binary_expression "lVar13 + (lVar22 + lVar24) * 4" (identifier "lVar13") (+ "+") (binary_expression "(lVar22 + lVar24) * 4" (parenthesized_expression "(lVar22 + lVar24)" (( "(") (binary_expression "lVar22 + lVar24" (identifier "lVar22") (+ "+") (identifier "lVar24")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (if_statement "if ((uVar23 & 4) == 0) {\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }\n            else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" (if "if") (parenthesized_expression "((uVar23 & 4) == 0)" (( "(") (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" (( "(") (binary_expression "uVar23 & 4" (identifier "uVar23") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;\n              dVar38 = DAT_003f9c68;\n              if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }\n              if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }\n            }" ({ "{") (expression_statement "dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;" (assignment_expression "dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34" (identifier "dVar27") (= "=") (binary_expression "dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34" (binary_expression "dVar37 * (dVar31 + dVar32)" (identifier "dVar37") (* "*") (parenthesized_expression "(dVar31 + dVar32)" (( "(") (binary_expression "dVar31 + dVar32" (identifier "dVar31") (+ "+") (identifier "dVar32")) () ")"))) (+ "+") (binary_expression "(dVar31 + dVar32) * dVar34" (parenthesized_expression "(dVar31 + dVar32)" (( "(") (binary_expression "dVar31 + dVar32" (identifier "dVar31") (+ "+") (identifier "dVar32")) () ")")) (* "*") (identifier "dVar34")))) (; ";")) (expression_statement "dVar38 = DAT_003f9c68;" (assignment_expression "dVar38 = DAT_003f9c68" (identifier "dVar38") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar27) {\n                dVar38 = DAT_003f9608;\n              }" (if "if") (parenthesized_expression "(0.0 <= dVar27)" (( "(") (binary_expression "0.0 <= dVar27" (number_literal "0.0") (<= "<=") (identifier "dVar27")) () ")")) (compound_statement "{\n                dVar38 = DAT_003f9608;\n              }" ({ "{") (expression_statement "dVar38 = DAT_003f9608;" (assignment_expression "dVar38 = DAT_003f9608" (identifier "dVar38") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar38 * dVar27 < DAT_003f9600) {\n                dVar27 = dVar38 / DAT_003f9600;\n              }\n              else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }" (if "if") (parenthesized_expression "(dVar38 * dVar27 < DAT_003f9600)" (( "(") (binary_expression "dVar38 * dVar27 < DAT_003f9600" (binary_expression "dVar38 * dVar27" (identifier "dVar38") (* "*") (identifier "dVar27")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                dVar27 = dVar38 / DAT_003f9600;\n              }" ({ "{") (expression_statement "dVar27 = dVar38 / DAT_003f9600;" (assignment_expression "dVar27 = dVar38 / DAT_003f9600" (identifier "dVar27") (= "=") (binary_expression "dVar38 / DAT_003f9600" (identifier "dVar38") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                dVar27 = DAT_003f9608 / dVar27;\n              }" (else "else") (compound_statement "{\n                dVar27 = DAT_003f9608 / dVar27;\n              }" ({ "{") (expression_statement "dVar27 = DAT_003f9608 / dVar27;" (assignment_expression "dVar27 = DAT_003f9608 / dVar27" (identifier "dVar27") (= "=") (binary_expression "DAT_003f9608 / dVar27" (identifier "DAT_003f9608") (/ "/") (identifier "dVar27"))) (; ";")) (} "}")))) (if_statement "if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);\n              }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27)" (( "(") (binary_expression "(dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27" (parenthesized_expression "(dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33))" (( "(") (binary_expression "dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +\n                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)" (binary_expression "dVar37 * (dVar28 * dVar32 + dVar35 * dVar31)" (identifier "dVar37") (* "*") (parenthesized_expression "(dVar28 * dVar32 + dVar35 * dVar31)" (( "(") (binary_expression "dVar28 * dVar32 + dVar35 * dVar31" (binary_expression "dVar28 * dVar32" (identifier "dVar28") (* "*") (identifier "dVar32")) (+ "+") (binary_expression "dVar35 * dVar31" (identifier "dVar35") (* "*") (identifier "dVar31"))) () ")"))) (+ "+") (binary_expression "dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)" (identifier "dVar34") (* "*") (parenthesized_expression "(dVar31 * dVar36 + dVar32 * dVar33)" (( "(") (binary_expression "dVar31 * dVar36 + dVar32 * dVar33" (binary_expression "dVar31 * dVar36" (identifier "dVar31") (* "*") (identifier "dVar36")) (+ "+") (binary_expression "dVar32 * dVar33" (identifier "dVar32") (* "*") (identifier "dVar33"))) () ")")))) () ")")) (* "*") (identifier "dVar27")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" (else "else") (compound_statement "{\n              dVar30 = DAT_003f9608;\n              dVar38 = dVar26;\n              dVar27 = dVar26;\n              fVar9 = _DAT_003fa400;\n              if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;\n              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);\n              if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }\n              if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }\n            }" ({ "{") (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" (identifier "dVar30") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "dVar38 = dVar26;" (assignment_expression "dVar38 = dVar26" (identifier "dVar38") (= "=") (identifier "dVar26")) (; ";")) (expression_statement "dVar27 = dVar26;" (assignment_expression "dVar27 = dVar26" (identifier "dVar27") (= "=") (identifier "dVar26")) (; ";")) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" (identifier "fVar9") (= "=") (identifier "_DAT_003fa400")) (; ";")) (if_statement "if (*(int *)(lVar18 + 0x44) != 0) {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" (if "if") (parenthesized_expression "(*(int *)(lVar18 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(lVar18 + 0x44) != 0" (pointer_expression "*(int *)(lVar18 + 0x44)" (* "*") (cast_expression "(int *)(lVar18 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x44)" (( "(") (binary_expression "lVar18 + 0x44" (identifier "lVar18") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" ({ "{") (expression_statement "lVar22 = *(long *)(lVar18 + 0x48) * 4;" (assignment_expression "lVar22 = *(long *)(lVar18 + 0x48) * 4" (identifier "lVar22") (= "=") (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" (* "*") (cast_expression "(long *)(lVar18 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x48)" (( "(") (binary_expression "lVar18 + 0x48" (identifier "lVar18") (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) (; ";")) (expression_statement "dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;" (assignment_expression "dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (identifier "dVar30") (= "=") (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 8)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 8)" (( "(") (binary_expression "lVar13 + lVar22 + lVar24 * 8" (binary_expression "lVar13 + lVar22" (identifier "lVar13") (+ "+") (identifier "lVar22")) (+ "+") (binary_expression "lVar24 * 8" (identifier "lVar24") (* "*") (number_literal "8"))) () ")"))))) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;" (assignment_expression "dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (identifier "dVar38") (= "=") (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 4)" (( "(") (binary_expression "lVar13 + lVar22 + lVar24 * 4" (binary_expression "lVar13 + lVar22" (identifier "lVar13") (+ "+") (identifier "lVar22")) (+ "+") (binary_expression "lVar24 * 4" (identifier "lVar24") (* "*") (number_literal "4"))) () ")"))))) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;" (assignment_expression "dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (identifier "dVar27") (= "=") (binary_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (* "*") (cast_expression "(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (( "(") (binary_expression "lVar13 + *(long *)(lVar18 + 0x48) * 4" (identifier "lVar13") (+ "+") (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" (* "*") (cast_expression "(long *)(lVar18 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x48)" (( "(") (binary_expression "lVar18 + 0x48" (identifier "lVar18") (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);" (assignment_expression "fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc)" (identifier "fVar9") (= "=") (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 0xc)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 0xc)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 0xc)" (( "(") (binary_expression "lVar13 + lVar22 + lVar24 * 0xc" (binary_expression "lVar13 + lVar22" (identifier "lVar13") (+ "+") (identifier "lVar22")) (+ "+") (binary_expression "lVar24 * 0xc" (identifier "lVar24") (* "*") (number_literal "0xc"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;" (assignment_expression "dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" (identifier "dVar29") (= "=") (binary_expression "(dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +\n                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" (binary_expression "(dVar32 * dVar27 + dVar31 * dVar38) * dVar37" (parenthesized_expression "(dVar32 * dVar27 + dVar31 * dVar38)" (( "(") (binary_expression "dVar32 * dVar27 + dVar31 * dVar38" (binary_expression "dVar32 * dVar27" (identifier "dVar32") (* "*") (identifier "dVar27")) (+ "+") (binary_expression "dVar31 * dVar38" (identifier "dVar31") (* "*") (identifier "dVar38"))) () ")")) (* "*") (identifier "dVar37")) (+ "+") (binary_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34" (parenthesized_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30)" (( "(") (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60" (binary_expression "dVar31 * (double)fVar9" (identifier "dVar31") (* "*") (cast_expression "(double)fVar9" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar9"))) (* "*") (identifier "DAT_003f9c60")) (+ "+") (binary_expression "dVar32 * dVar30" (identifier "dVar32") (* "*") (identifier "dVar30"))) () ")")) (* "*") (identifier "dVar34")))) (; ";")) (expression_statement "dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);" (assignment_expression "dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" (identifier "dVar10") (= "=") (cast_expression "(double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608)" (( "(") (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |\n                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608" (binary_expression "(ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398)" (cast_expression "(ulong)DAT_003f9c68" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_003f9c68")) (& "&") (unary_expression "-(ulong)(dVar29 < DAT_003fa398)" (- "-") (call_expression "(ulong)(dVar29 < DAT_003fa398)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(dVar29 < DAT_003fa398)" (( "(") (binary_expression "dVar29 < DAT_003fa398" (identifier "dVar29") (< "<") (identifier "DAT_003fa398")) () ")"))))) (| "|") (binary_expression "~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar29 < DAT_003fa398)" (~ "~") (unary_expression "-(ulong)(dVar29 < DAT_003fa398)" (- "-") (call_expression "(ulong)(dVar29 < DAT_003fa398)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(dVar29 < DAT_003fa398)" (( "(") (binary_expression "dVar29 < DAT_003fa398" (identifier "dVar29") (< "<") (identifier "DAT_003fa398")) () ")"))))) (& "&") (cast_expression "(ulong)DAT_003f9608" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_003f9608")))) () ")")))) (; ";")) (if_statement "if (dVar10 * dVar29 < DAT_003f9600) {\n                dVar29 = dVar10 / DAT_003f9600;\n              }\n              else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" (if "if") (parenthesized_expression "(dVar10 * dVar29 < DAT_003f9600)" (( "(") (binary_expression "dVar10 * dVar29 < DAT_003f9600" (binary_expression "dVar10 * dVar29" (identifier "dVar10") (* "*") (identifier "dVar29")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                dVar29 = dVar10 / DAT_003f9600;\n              }" ({ "{") (expression_statement "dVar29 = dVar10 / DAT_003f9600;" (assignment_expression "dVar29 = dVar10 / DAT_003f9600" (identifier "dVar29") (= "=") (binary_expression "dVar10 / DAT_003f9600" (identifier "dVar10") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                dVar29 = DAT_003f9608 / dVar29;\n              }" (else "else") (compound_statement "{\n                dVar29 = DAT_003f9608 / dVar29;\n              }" ({ "{") (expression_statement "dVar29 = DAT_003f9608 / dVar29;" (assignment_expression "dVar29 = DAT_003f9608 / dVar29" (identifier "dVar29") (= "=") (binary_expression "DAT_003f9608 / dVar29" (identifier "DAT_003f9608") (/ "/") (identifier "dVar29"))) (; ";")) (} "}")))) (if_statement "if (iVar3 != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));\n              }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)))" (( "(") (binary_expression "dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30))" (identifier "dVar29") (* "*") (parenthesized_expression "(dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30))" (( "(") (binary_expression "dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                ) +\n                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" (binary_expression "dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                )" (identifier "dVar37") (* "*") (parenthesized_expression "(dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31\n                                                )" (( "(") (binary_expression "dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31" (binary_expression "dVar28 * dVar27 * dVar32" (binary_expression "dVar28 * dVar27" (identifier "dVar28") (* "*") (identifier "dVar27")) (* "*") (identifier "dVar32")) (+ "+") (binary_expression "dVar35 * dVar38 * dVar31" (binary_expression "dVar35 * dVar38" (identifier "dVar35") (* "*") (identifier "dVar38")) (* "*") (identifier "dVar31"))) () ")"))) (+ "+") (binary_expression "dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" (identifier "dVar34") (* "*") (parenthesized_expression "(dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30)" (( "(") (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +\n                                               dVar32 * dVar33 * dVar30" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36" (binary_expression "dVar31 * (double)fVar9 * DAT_003f9c60" (binary_expression "dVar31 * (double)fVar9" (identifier "dVar31") (* "*") (cast_expression "(double)fVar9" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar9"))) (* "*") (identifier "DAT_003f9c60")) (* "*") (identifier "dVar36")) (+ "+") (binary_expression "dVar32 * dVar33 * dVar30" (binary_expression "dVar32 * dVar33" (identifier "dVar32") (* "*") (identifier "dVar33")) (* "*") (identifier "dVar30"))) () ")")))) () ")"))) () ")")))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" (identifier "lVar20") (= "=") (binary_expression "lVar20 + 1" (identifier "lVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" (identifier "lVar24") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar20 < lVar24)" (( "(") (binary_expression "lVar20 < lVar24" (identifier "lVar20") (< "<") (identifier "lVar24")) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 2:" (case "case") (number_literal "2") (: ":")) (case_statement "case 3:\n    if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);\n    dVar31 = DAT_003f9c68;\n    dVar28 = DAT_003f9c60;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" (case "case") (number_literal "3") (: ":") (if_statement "if (param_6 == 2) {\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }\n    else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" (if "if") (parenthesized_expression "(param_6 == 2)" (( "(") (binary_expression "param_6 == 2" (identifier "param_6") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }\n      local_178 = local_178 + DAT_003f9c28;\n      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }\n      lVar25 = (long)(local_178 - DAT_003f9608);\n      if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }\n      local_170 = local_170 + DAT_003f9c28;\n      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }\n      local_168 = (long)(local_170 - DAT_003f9608);\n      lVar13 = 3;\n    }" ({ "{") (if_statement "if (param_1 < DAT_004294e8) {\n        local_178 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" (if "if") (parenthesized_expression "(param_1 < DAT_004294e8)" (( "(") (binary_expression "param_1 < DAT_004294e8" (identifier "param_1") (< "<") (identifier "DAT_004294e8")) () ")")) (compound_statement "{\n        local_178 = DAT_004294e8;\n      }" ({ "{") (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" (identifier "local_178") (= "=") (identifier "DAT_004294e8")) (; ";")) (} "}")) (else_clause "else if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" (else "else") (if_statement "if (DAT_004294f0 < param_1) {\n        local_178 = DAT_004294f0;\n      }" (if "if") (parenthesized_expression "(DAT_004294f0 < param_1)" (( "(") (binary_expression "DAT_004294f0 < param_1" (identifier "DAT_004294f0") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n        local_178 = DAT_004294f0;\n      }" ({ "{") (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" (identifier "local_178") (= "=") (identifier "DAT_004294f0")) (; ";")) (} "}"))))) (expression_statement "local_178 = local_178 + DAT_003f9c28;" (assignment_expression "local_178 = local_178 + DAT_003f9c28" (identifier "local_178") (= "=") (binary_expression "local_178 + DAT_003f9c28" (identifier "local_178") (+ "+") (identifier "DAT_003f9c28"))) (; ";")) (if_statement "if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" (if "if") (parenthesized_expression "((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30)" (( "(") (binary_expression "(double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_178 & DAT_003f9c70)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)local_178 & DAT_003f9c70)" (( "(") (binary_expression "(ulong)local_178 & DAT_003f9c70" (cast_expression "(ulong)local_178" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_178")) (& "&") (identifier "DAT_003f9c70")) () ")"))) (< "<") (identifier "DAT_003f9c30")) () ")")) (compound_statement "{\n        local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );\n      }" ({ "{") (expression_statement "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            );" (assignment_expression "local_178 = (double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" (identifier "local_178") (= "=") (cast_expression "(double)((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178\n                            )" (( "(") (binary_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178" (call_expression "(ulong)((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608))" (( "(") (binary_expression "(double)(long)local_178 -\n                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_178" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(long)local_178" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_178"))) (- "-") (cast_expression "(double)(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608)" (( "(") (binary_expression "-(ulong)(local_178 < (double)(long)local_178) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_178 < (double)(long)local_178)" (- "-") (call_expression "(ulong)(local_178 < (double)(long)local_178)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(local_178 < (double)(long)local_178)" (( "(") (binary_expression "local_178 < (double)(long)local_178" (identifier "local_178") (< "<") (cast_expression "(double)(long)local_178" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(long)local_178" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_178")))) () ")")))) (& "&") (cast_expression "(ulong)DAT_003f9608" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_003f9608"))) () ")")))) () ")"))) (| "|") (binary_expression "~DAT_003f9c70 & (ulong)local_178" (unary_expression "~DAT_003f9c70" (~ "~") (identifier "DAT_003f9c70")) (& "&") (cast_expression "(ulong)local_178" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_178")))) () ")")))) (; ";")) (} "}"))) (expression_statement "lVar25 = (long)(local_178 - DAT_003f9608);" (assignment_expression "lVar25 = (long)(local_178 - DAT_003f9608)" (identifier "lVar25") (= "=") (cast_expression "(long)(local_178 - DAT_003f9608)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(local_178 - DAT_003f9608)" (( "(") (binary_expression "local_178 - DAT_003f9608" (identifier "local_178") (- "-") (identifier "DAT_003f9608")) () ")")))) (; ";")) (if_statement "if (param_2 < DAT_004294e8) {\n        local_170 = DAT_004294e8;\n      }\n      else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" (if "if") (parenthesized_expression "(param_2 < DAT_004294e8)" (( "(") (binary_expression "param_2 < DAT_004294e8" (identifier "param_2") (< "<") (identifier "DAT_004294e8")) () ")")) (compound_statement "{\n        local_170 = DAT_004294e8;\n      }" ({ "{") (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" (identifier "local_170") (= "=") (identifier "DAT_004294e8")) (; ";")) (} "}")) (else_clause "else if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" (else "else") (if_statement "if (DAT_004294f0 < param_2) {\n        local_170 = DAT_004294f0;\n      }" (if "if") (parenthesized_expression "(DAT_004294f0 < param_2)" (( "(") (binary_expression "DAT_004294f0 < param_2" (identifier "DAT_004294f0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n        local_170 = DAT_004294f0;\n      }" ({ "{") (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" (identifier "local_170") (= "=") (identifier "DAT_004294f0")) (; ";")) (} "}"))))) (expression_statement "local_170 = local_170 + DAT_003f9c28;" (assignment_expression "local_170 = local_170 + DAT_003f9c28" (identifier "local_170") (= "=") (binary_expression "local_170 + DAT_003f9c28" (identifier "local_170") (+ "+") (identifier "DAT_003f9c28"))) (; ";")) (if_statement "if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" (if "if") (parenthesized_expression "((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30)" (( "(") (binary_expression "(double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30" (cast_expression "(double)((ulong)local_170 & DAT_003f9c70)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)local_170 & DAT_003f9c70)" (( "(") (binary_expression "(ulong)local_170 & DAT_003f9c70" (cast_expression "(ulong)local_170" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_170")) (& "&") (identifier "DAT_003f9c70")) () ")"))) (< "<") (identifier "DAT_003f9c30")) () ")")) (compound_statement "{\n        local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );\n      }" ({ "{") (expression_statement "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            );" (assignment_expression "local_170 = (double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" (identifier "local_170") (= "=") (cast_expression "(double)((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170\n                            )" (( "(") (binary_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170" (call_expression "(ulong)((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608))" (( "(") (binary_expression "(double)(long)local_170 -\n                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" (cast_expression "(double)(long)local_170" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(long)local_170" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_170"))) (- "-") (cast_expression "(double)(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608)" (( "(") (binary_expression "-(ulong)(local_170 < (double)(long)local_170) &\n                                            (ulong)DAT_003f9608" (unary_expression "-(ulong)(local_170 < (double)(long)local_170)" (- "-") (call_expression "(ulong)(local_170 < (double)(long)local_170)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(local_170 < (double)(long)local_170)" (( "(") (binary_expression "local_170 < (double)(long)local_170" (identifier "local_170") (< "<") (cast_expression "(double)(long)local_170" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(long)local_170" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_170")))) () ")")))) (& "&") (cast_expression "(ulong)DAT_003f9608" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_003f9608"))) () ")")))) () ")"))) (| "|") (binary_expression "~DAT_003f9c70 & (ulong)local_170" (unary_expression "~DAT_003f9c70" (~ "~") (identifier "DAT_003f9c70")) (& "&") (cast_expression "(ulong)local_170" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_170")))) () ")")))) (; ";")) (} "}"))) (expression_statement "local_168 = (long)(local_170 - DAT_003f9608);" (assignment_expression "local_168 = (long)(local_170 - DAT_003f9608)" (identifier "local_168") (= "=") (cast_expression "(long)(local_170 - DAT_003f9608)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(local_170 - DAT_003f9608)" (( "(") (binary_expression "local_170 - DAT_003f9608" (identifier "local_170") (- "-") (identifier "DAT_003f9608")) () ")")))) (; ";")) (expression_statement "lVar13 = 3;" (assignment_expression "lVar13 = 3" (identifier "lVar13") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" (else "else") (compound_statement "{\n      lVar13 = 2;\n      if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }\n    }" ({ "{") (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" (identifier "lVar13") (= "=") (number_literal "2")) (; ";")) (if_statement "if (param_6 == 3) {\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }" (if "if") (parenthesized_expression "(param_6 == 3)" (( "(") (binary_expression "param_6 == 3" (identifier "param_6") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n        lVar25 = lVar25 + -1;\n        local_168 = local_168 + -1;\n        lVar13 = 4;\n      }" ({ "{") (expression_statement "lVar25 = lVar25 + -1;" (assignment_expression "lVar25 = lVar25 + -1" (identifier "lVar25") (= "=") (binary_expression "lVar25 + -1" (identifier "lVar25") (+ "+") (number_literal "-1"))) (; ";")) (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"))) (; ";")) (expression_statement "lVar13 = 4;" (assignment_expression "lVar13 = 4" (identifier "lVar13") (= "=") (number_literal "4")) (; ";")) (} "}"))) (} "}")))) (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8)" (identifier "lVar25") (= "=") (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,lVar25,local_168,lVar13,lVar13,param_8)" (( "(") (identifier "param_4") (, ",") (identifier "lVar25") (, ",") (identifier "local_168") (, ",") (identifier "lVar13") (, ",") (identifier "lVar13") (, ",") (identifier "param_8") () ")")))) (; ";")) (expression_statement "dVar31 = DAT_003f9c68;" (assignment_expression "dVar31 = DAT_003f9c68" (identifier "dVar31") (= "=") (identifier "DAT_003f9c68")) (; ";")) (expression_statement "dVar28 = DAT_003f9c60;" (assignment_expression "dVar28 = DAT_003f9c60" (identifier "dVar28") (= "=") (identifier "DAT_003f9c60")) (; ";")) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" (identifier "dVar26") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar25 != 0) {\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(lVar25 != 0)" (( "(") (binary_expression "lVar25 != 0" (identifier "lVar25") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar13 = lVar13 * lVar13;\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" ({ "{") (expression_statement "lVar13 = lVar13 * lVar13;" (assignment_expression "lVar13 = lVar13 * lVar13" (identifier "lVar13") (= "=") (binary_expression "lVar13 * lVar13" (identifier "lVar13") (* "*") (identifier "lVar13"))) (; ";")) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" (identifier "lVar24") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(lVar24 < 1)" (( "(") (binary_expression "lVar24 < 1" (identifier "lVar24") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        pdVar1 = local_c8 + lVar13;\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "pdVar1 = local_c8 + lVar13;" (assignment_expression "pdVar1 = local_c8 + lVar13" (identifier "pdVar1") (= "=") (binary_expression "local_c8 + lVar13" (identifier "local_c8") (+ "+") (identifier "lVar13"))) (; ";")) (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" (identifier "lVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" (do "do") (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n          iVar3 = *(int *)(lVar17 + 4);\n          if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }\nLAB_0025586a:\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" ({ "{") (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" (identifier "lVar18") (= "=") (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (identifier "lVar17") (= "=") (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + lVar20 * 0x10)" (( "(") (binary_expression "lVar18 + lVar20 * 0x10" (identifier "lVar18") (+ "+") (binary_expression "lVar20 * 0x10" (identifier "lVar20") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" (* "*") (cast_expression "(uint *)(lVar18 + 4 + lVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 4 + lVar17)" (( "(") (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" (identifier "lVar18") (+ "+") (number_literal "4")) (+ "+") (identifier "lVar17")) () ")"))))) (; ";")) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (= "=") (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (expression_statement "iVar3 = *(int *)(lVar17 + 4);" (assignment_expression "iVar3 = *(int *)(lVar17 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar17 + 4)" (* "*") (cast_expression "(int *)(lVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 4)" (( "(") (binary_expression "lVar17 + 4" (identifier "lVar17") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((uVar23 != 0) && (iVar3 != 0)) {\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }" (if "if") (parenthesized_expression "((uVar23 != 0) && (iVar3 != 0))" (( "(") (binary_expression "(uVar23 != 0) && (iVar3 != 0)" (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }\n            if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }\n          }" ({ "{") (if_statement "if (lVar13 == 0) {\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }\n            else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" (if "if") (parenthesized_expression "(lVar13 == 0)" (( "(") (binary_expression "lVar13 == 0" (identifier "lVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              dVar32 = 0.0;\n              if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }\n            }" ({ "{") (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" (identifier "dVar32") (= "=") (number_literal "0.0")) (; ";")) (if_statement "if ((uVar23 & 4) == 0) {\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }" (if "if") (parenthesized_expression "((uVar23 & 4) == 0)" (( "(") (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" (( "(") (binary_expression "uVar23 & 4" (identifier "uVar23") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                dVar32 = 0.0;\n                goto LAB_00253e49;\n              }" ({ "{") (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" (identifier "dVar32") (= "=") (number_literal "0.0")) (; ";")) (goto_statement "goto LAB_00253e49;" (goto "goto") (statement_identifier "LAB_00253e49") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" (else "else") (compound_statement "{\n              pfVar15 = (float *)(lVar25 + lVar20 * 4);\n              pdVar16 = local_c8;\n              do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);\n              if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }\n              iVar4 = *(int *)(lVar18 + 0x44);\n              lVar22 = 0;\n              dVar32 = 0.0;\n              pdVar16 = local_c8;\n              do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);\n            }" ({ "{") (expression_statement "pfVar15 = (float *)(lVar25 + lVar20 * 4);" (assignment_expression "pfVar15 = (float *)(lVar25 + lVar20 * 4)" (identifier "pfVar15") (= "=") (cast_expression "(float *)(lVar25 + lVar20 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + lVar20 * 4)" (( "(") (binary_expression "lVar25 + lVar20 * 4" (identifier "lVar25") (+ "+") (binary_expression "lVar20 * 4" (identifier "lVar20") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "pdVar16 = local_c8;" (assignment_expression "pdVar16 = local_c8" (identifier "pdVar16") (= "=") (identifier "local_c8")) (; ";")) (do_statement "do {\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar1 != pdVar16);" (do "do") (compound_statement "{\n                *pdVar16 = (double)*pfVar15;\n                pfVar15 = pfVar15 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              }" ({ "{") (expression_statement "*pdVar16 = (double)*pfVar15;" (assignment_expression "*pdVar16 = (double)*pfVar15" (pointer_expression "*pdVar16" (* "*") (identifier "pdVar16")) (= "=") (cast_expression "(double)*pfVar15" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*pfVar15" (* "*") (identifier "pfVar15")))) (; ";")) (expression_statement "pfVar15 = pfVar15 + lVar24;" (assignment_expression "pfVar15 = pfVar15 + lVar24" (identifier "pfVar15") (= "=") (binary_expression "pfVar15 + lVar24" (identifier "pfVar15") (+ "+") (identifier "lVar24"))) (; ";")) (expression_statement "pdVar16 = pdVar16 + 1;" (assignment_expression "pdVar16 = pdVar16 + 1" (identifier "pdVar16") (= "=") (binary_expression "pdVar16 + 1" (identifier "pdVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pdVar1 != pdVar16)" (( "(") (binary_expression "pdVar1 != pdVar16" (identifier "pdVar1") (!= "!=") (identifier "pdVar16")) () ")")) (; ";")) (if_statement "if ((uVar23 & 4) == 0) {\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }" (if "if") (parenthesized_expression "((uVar23 & 4) == 0)" (( "(") (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" (( "(") (binary_expression "uVar23 & 4" (identifier "uVar23") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                lVar24 = 0;\n                dVar32 = 0.0;\n                do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);\nLAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }\n                goto LAB_0025586a;\n              }" ({ "{") (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" (identifier "lVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" (identifier "dVar32") (= "=") (number_literal "0.0")) (; ";")) (do_statement "do {\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);" (do "do") (compound_statement "{\n                  dVar32 = dVar32 + local_c8[lVar24];\n                  lVar24 = lVar24 + 1;\n                }" ({ "{") (expression_statement "dVar32 = dVar32 + local_c8[lVar24];" (assignment_expression "dVar32 = dVar32 + local_c8[lVar24]" (identifier "dVar32") (= "=") (binary_expression "dVar32 + local_c8[lVar24]" (identifier "dVar32") (+ "+") (subscript_expression "local_c8[lVar24]" (identifier "local_c8") ([ "[") (identifier "lVar24") (] "]")))) (; ";")) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" (identifier "lVar24") (= "=") (binary_expression "lVar24 + 1" (identifier "lVar24") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar13 - lVar24 != 0 && lVar24 <= lVar13)" (( "(") (binary_expression "lVar13 - lVar24 != 0 && lVar24 <= lVar13" (binary_expression "lVar13 - lVar24 != 0" (binary_expression "lVar13 - lVar24" (identifier "lVar13") (- "-") (identifier "lVar24")) (!= "!=") (number_literal "0")) (&& "&&") (binary_expression "lVar24 <= lVar13" (identifier "lVar24") (<= "<=") (identifier "lVar13"))) () ")")) (; ";")) (labeled_statement "LAB_00253e49:\n                if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" (statement_identifier "LAB_00253e49") (: ":") (if_statement "if (iVar3 != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;\n                }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)\n                  ;" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)(dVar32 / (double)lVar13)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar32 / (double)lVar13)" (( "(") (binary_expression "dVar32 / (double)lVar13" (identifier "dVar32") (/ "/") (cast_expression "(double)lVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar13"))) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_0025586a;" (goto "goto") (statement_identifier "LAB_0025586a") (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(lVar18 + 0x44);" (assignment_expression "iVar4 = *(int *)(lVar18 + 0x44)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(lVar18 + 0x44)" (* "*") (cast_expression "(int *)(lVar18 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x44)" (( "(") (binary_expression "lVar18 + 0x44" (identifier "lVar18") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" (identifier "lVar22") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar32 = 0.0;" (assignment_expression "dVar32 = 0.0" (identifier "dVar32") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "pdVar16 = local_c8;" (assignment_expression "pdVar16 = local_c8" (identifier "pdVar16") (= "=") (identifier "local_c8")) (; ";")) (do_statement "do {\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              } while (pdVar16 != pdVar1);" (do "do") (compound_statement "{\n                if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }\n                dVar32 = dVar32 + dVar33 * dVar35;\n                lVar22 = lVar22 + lVar24;\n                pdVar16 = pdVar16 + 1;\n              }" ({ "{") (if_statement "if (iVar4 == 0) {\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }\n                else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  dVar33 = *pdVar16;\n                  dVar34 = dVar26;\nLAB_00255912:\n                  dVar35 = dVar26 / dVar34;\n                }" ({ "{") (expression_statement "dVar33 = *pdVar16;" (assignment_expression "dVar33 = *pdVar16" (identifier "dVar33") (= "=") (pointer_expression "*pdVar16" (* "*") (identifier "pdVar16"))) (; ";")) (expression_statement "dVar34 = dVar26;" (assignment_expression "dVar34 = dVar26" (identifier "dVar34") (= "=") (identifier "dVar26")) (; ";")) (labeled_statement "LAB_00255912:\n                  dVar35 = dVar26 / dVar34;" (statement_identifier "LAB_00255912") (: ":") (expression_statement "dVar35 = dVar26 / dVar34;" (assignment_expression "dVar35 = dVar26 / dVar34" (identifier "dVar35") (= "=") (binary_expression "dVar26 / dVar34" (identifier "dVar26") (/ "/") (identifier "dVar34"))) (; ";"))) (} "}")) (else_clause "else {\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" (else "else") (compound_statement "{\n                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;\n                  dVar33 = dVar34 * *pdVar16;\n                  *pdVar16 = dVar33;\n                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);\n                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;\n                  dVar35 = dVar35 / DAT_003f9600;\n                }" ({ "{") (expression_statement "dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28;" (assignment_expression "dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28" (identifier "dVar34") (= "=") (binary_expression "(double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *\n                           dVar28" (cast_expression "(double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" (* "*") (cast_expression "(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4)" (( "(") (binary_expression "lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4" (identifier "lVar25") (+ "+") (binary_expression "(lVar22 + *(long *)(lVar18 + 0x48)) * 4" (parenthesized_expression "(lVar22 + *(long *)(lVar18 + 0x48))" (( "(") (binary_expression "lVar22 + *(long *)(lVar18 + 0x48)" (identifier "lVar22") (+ "+") (pointer_expression "*(long *)(lVar18 + 0x48)" (* "*") (cast_expression "(long *)(lVar18 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x48)" (( "(") (binary_expression "lVar18 + 0x48" (identifier "lVar18") (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (* "*") (number_literal "4"))) () ")"))))) (* "*") (identifier "dVar28"))) (; ";")) (expression_statement "dVar33 = dVar34 * *pdVar16;" (assignment_expression "dVar33 = dVar34 * *pdVar16" (identifier "dVar33") (= "=") (binary_expression "dVar34 * *pdVar16" (identifier "dVar34") (* "*") (pointer_expression "*pdVar16" (* "*") (identifier "pdVar16")))) (; ";")) (expression_statement "*pdVar16 = dVar33;" (assignment_expression "*pdVar16 = dVar33" (pointer_expression "*pdVar16" (* "*") (identifier "pdVar16")) (= "=") (identifier "dVar33")) (; ";")) (expression_statement "dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);" (assignment_expression "dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" (identifier "dVar35") (= "=") (cast_expression "(double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608)" (( "(") (binary_expression "(ulong)dVar31 & -(ulong)(dVar34 < 0.0) |\n                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608" (binary_expression "(ulong)dVar31 & -(ulong)(dVar34 < 0.0)" (cast_expression "(ulong)dVar31" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar31")) (& "&") (unary_expression "-(ulong)(dVar34 < 0.0)" (- "-") (call_expression "(ulong)(dVar34 < 0.0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(dVar34 < 0.0)" (( "(") (binary_expression "dVar34 < 0.0" (identifier "dVar34") (< "<") (number_literal "0.0")) () ")"))))) (| "|") (binary_expression "~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608" (unary_expression "~-(ulong)(dVar34 < 0.0)" (~ "~") (unary_expression "-(ulong)(dVar34 < 0.0)" (- "-") (call_expression "(ulong)(dVar34 < 0.0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(dVar34 < 0.0)" (( "(") (binary_expression "dVar34 < 0.0" (identifier "dVar34") (< "<") (number_literal "0.0")) () ")"))))) (& "&") (cast_expression "(ulong)DAT_003f9608" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_003f9608")))) () ")")))) (; ";")) (if_statement "if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;" (if "if") (parenthesized_expression "(DAT_003f9600 <= dVar34 * dVar35)" (( "(") (binary_expression "DAT_003f9600 <= dVar34 * dVar35" (identifier "DAT_003f9600") (<= "<=") (binary_expression "dVar34 * dVar35" (identifier "dVar34") (* "*") (identifier "dVar35"))) () ")")) (goto_statement "goto LAB_00255912;" (goto "goto") (statement_identifier "LAB_00255912") (; ";"))) (expression_statement "dVar35 = dVar35 / DAT_003f9600;" (assignment_expression "dVar35 = dVar35 / DAT_003f9600" (identifier "dVar35") (= "=") (binary_expression "dVar35 / DAT_003f9600" (identifier "dVar35") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")))) (expression_statement "dVar32 = dVar32 + dVar33 * dVar35;" (assignment_expression "dVar32 = dVar32 + dVar33 * dVar35" (identifier "dVar32") (= "=") (binary_expression "dVar32 + dVar33 * dVar35" (identifier "dVar32") (+ "+") (binary_expression "dVar33 * dVar35" (identifier "dVar33") (* "*") (identifier "dVar35")))) (; ";")) (expression_statement "lVar22 = lVar22 + lVar24;" (assignment_expression "lVar22 = lVar22 + lVar24" (identifier "lVar22") (= "=") (binary_expression "lVar22 + lVar24" (identifier "lVar22") (+ "+") (identifier "lVar24"))) (; ";")) (expression_statement "pdVar16 = pdVar16 + 1;" (assignment_expression "pdVar16 = pdVar16 + 1" (identifier "pdVar16") (= "=") (binary_expression "pdVar16 + 1" (identifier "pdVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pdVar16 != pdVar1)" (( "(") (binary_expression "pdVar16 != pdVar1" (identifier "pdVar16") (!= "!=") (identifier "pdVar1")) () ")")) (; ";")) (} "}")))) (if_statement "if (iVar3 != 0) {\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);\n            }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)(dVar32 / (double)lVar13)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar32 / (double)lVar13)" (( "(") (binary_expression "dVar32 / (double)lVar13" (identifier "dVar32") (/ "/") (cast_expression "(double)lVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar13"))) () ")")))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0025586a:\n          lVar20 = lVar20 + 1;" (statement_identifier "LAB_0025586a") (: ":") (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" (identifier "lVar20") (= "=") (binary_expression "lVar20 + 1" (identifier "lVar20") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" (identifier "lVar24") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar20 < lVar24)" (( "(") (binary_expression "lVar20 < lVar24" (identifier "lVar20") (< "<") (identifier "lVar24")) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 6:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    dVar31 = _DAT_004294f8;\n    fVar9 = _DAT_003fa400;\n    dVar28 = DAT_003f9608;\n    dVar26 = DAT_003f9600;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;" (case "case") (number_literal "6") (: ":") (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" (identifier "pfVar15") (= "=") (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,lVar25,local_168,2,2,param_8)" (( "(") (identifier "param_4") (, ",") (identifier "lVar25") (, ",") (identifier "local_168") (, ",") (number_literal "2") (, ",") (number_literal "2") (, ",") (identifier "param_8") () ")"))))) (; ";")) (expression_statement "dVar31 = _DAT_004294f8;" (assignment_expression "dVar31 = _DAT_004294f8" (identifier "dVar31") (= "=") (identifier "_DAT_004294f8")) (; ";")) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" (identifier "fVar9") (= "=") (identifier "_DAT_003fa400")) (; ";")) (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" (identifier "dVar28") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "dVar26 = DAT_003f9600;" (assignment_expression "dVar26 = DAT_003f9600" (identifier "dVar26") (= "=") (identifier "DAT_003f9600")) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(pfVar15 != (float *)0x0)" (( "(") (binary_expression "pfVar15 != (float *)0x0" (identifier "pfVar15") (!= "!=") (cast_expression "(float *)0x0" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" ({ "{") (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(lVar13 < 1)" (( "(") (binary_expression "lVar13 < 1" (identifier "lVar13") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" (identifier "lVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" (identifier "pfVar21") (= "=") (identifier "pfVar15")) (; ";")) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" (do "do") (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);\n          lVar18 = (ulong)uVar23 * 0x10;\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" ({ "{") (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" (identifier "lVar20") (= "=") (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);" (assignment_expression "uVar23 = *(uint *)(lVar20 + lVar24 * 0x10)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(lVar20 + lVar24 * 0x10)" (* "*") (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + lVar24 * 0x10)" (( "(") (binary_expression "lVar20 + lVar24 * 0x10" (identifier "lVar20") (+ "+") (binary_expression "lVar24 * 0x10" (identifier "lVar24") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (expression_statement "lVar18 = (ulong)uVar23 * 0x10;" (assignment_expression "lVar18 = (ulong)uVar23 * 0x10" (identifier "lVar18") (= "=") (binary_expression "(ulong)uVar23 * 0x10" (cast_expression "(ulong)uVar23" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar23")) (* "*") (number_literal "0x10"))) (; ";")) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)) {\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }" (if "if") (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0))" (( "(") (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&\n             (*(int *)(lVar20 + 4 + lVar18) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" (* "*") (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" (( "(") (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(lVar20 + 4 + lVar18) != 0)" (( "(") (binary_expression "*(int *)(lVar20 + 4 + lVar18) != 0" (pointer_expression "*(int *)(lVar20 + 4 + lVar18)" (* "*") (cast_expression "(int *)(lVar20 + 4 + lVar18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 4 + lVar18)" (( "(") (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" (identifier "lVar20") (+ "+") (number_literal "4")) (+ "+") (identifier "lVar18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }\n            dVar33 = param_2 - (double)local_168;\n            dVar32 = DAT_003f9608;\n            if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }\n            if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }\n            if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }\n          }" ({ "{") (if_statement "if (*(int *)(param_3 + 0x33c) == 4) {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }\n            else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x33c) == 4)" (( "(") (binary_expression "*(int *)(param_3 + 0x33c) == 4" (pointer_expression "*(int *)(param_3 + 0x33c)" (* "*") (cast_expression "(int *)(param_3 + 0x33c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x33c)" (( "(") (binary_expression "param_3 + 0x33c" (identifier "param_3") (+ "+") (number_literal "0x33c")) () ")")))) (== "==") (number_literal "4")) () ")")) (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);\n            }" ({ "{") (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar20 + 0x44)" (* "*") (cast_expression "(int *)(lVar20 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 0x44)" (( "(") (binary_expression "lVar20 + 0x44" (identifier "lVar20") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" (identifier "lVar22") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" (identifier "lVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 4);" (do "do") (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" ({ "{") (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" (identifier "fVar2") (= "=") (identifier "fVar9")) (; ";")) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" ({ "{") (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" (identifier "fVar2") (= "=") (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" (identifier "pfVar15") ([ "[") (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" (identifier "lVar22") (+ "+") (pointer_expression "*(long *)(lVar20 + 0x48)" (* "*") (cast_expression "(long *)(lVar20 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 0x48)" (( "(") (binary_expression "lVar20 + 0x48" (identifier "lVar20") (+ "+") (number_literal "0x48")) () ")"))))) (] "]"))) (; ";")) (} "}"))) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" (identifier "local_148") ([ "[") (identifier "lVar17") (] "]")) (= "=") (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar2")) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (if_statement "if (uVar23 == 4) {\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }\n                else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" (if "if") (parenthesized_expression "(uVar23 == 4)" (( "(") (binary_expression "uVar23 == 4" (identifier "uVar23") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n                  local_c8[lVar17] = (double)pfVar21[lVar22];\n                }" ({ "{") (expression_statement "local_c8[lVar17] = (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" (identifier "local_c8") ([ "[") (identifier "lVar17") (] "]")) (= "=") (cast_expression "(double)pfVar21[lVar22]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "pfVar21[lVar22]" (identifier "pfVar21") ([ "[") (identifier "lVar22") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" (else "else") (compound_statement "{\n                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                }" ({ "{") (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" (identifier "local_c8") ([ "[") (identifier "lVar17") (] "]")) (= "=") (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar2")) (* "*") (identifier "DAT_003f9c60")) (* "*") (cast_expression "(double)pfVar21[lVar22]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "pfVar21[lVar22]" (identifier "pfVar21") ([ "[") (identifier "lVar22") (] "]"))))) (; ";")) (} "}")))) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" (identifier "lVar22") (= "=") (binary_expression "lVar22 + lVar13" (identifier "lVar22") (+ "+") (identifier "lVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar17 != 4)" (( "(") (binary_expression "lVar17 != 4" (identifier "lVar17") (!= "!=") (number_literal "4")) () ")")) (; ";")) (} "}")) (else_clause "else {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" (else "else") (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);\n            }" ({ "{") (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" (identifier "lVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" (identifier "pfVar19") (= "=") (identifier "pfVar21")) (; ";")) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 4);" (do "do") (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" ({ "{") (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" (identifier "local_148") ([ "[") (identifier "lVar20") (] "]")) (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" (identifier "local_c8") ([ "[") (identifier "lVar20") (] "]")) (= "=") (cast_expression "(double)*pfVar19" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*pfVar19" (* "*") (identifier "pfVar19")))) (; ";")) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" (identifier "lVar20") (= "=") (binary_expression "lVar20 + 1" (identifier "lVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" (identifier "pfVar19") (= "=") (binary_expression "pfVar19 + lVar13" (identifier "pfVar19") (+ "+") (identifier "lVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar20 != 4)" (( "(") (binary_expression "lVar20 != 4" (identifier "lVar20") (!= "!=") (number_literal "4")) () ")")) (; ";")) (} "}")))) (expression_statement "dVar33 = param_2 - (double)local_168;" (assignment_expression "dVar33 = param_2 - (double)local_168" (identifier "dVar33") (= "=") (binary_expression "param_2 - (double)local_168" (identifier "param_2") (- "-") (cast_expression "(double)local_168" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "local_168")))) (; ";")) (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" (identifier "dVar32") (= "=") (identifier "DAT_003f9608")) (; ";")) (if_statement "if (dVar31 <= dVar33) {\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }\n            else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" (if "if") (parenthesized_expression "(dVar31 <= dVar33)" (( "(") (binary_expression "dVar31 <= dVar33" (identifier "dVar31") (<= "<=") (identifier "dVar33")) () ")")) (compound_statement "{\n              local_148[0] = local_148[2];\n              local_c8[0] = local_c8[2];\nLAB_00254349:\n              local_148[1] = local_148[3];\n              local_c8[1] = local_c8[3];\n            }" ({ "{") (expression_statement "local_148[0] = local_148[2];" (assignment_expression "local_148[0] = local_148[2]" (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")) (= "=") (subscript_expression "local_148[2]" (identifier "local_148") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_c8[0] = local_c8[2];" (assignment_expression "local_c8[0] = local_c8[2]" (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (= "=") (subscript_expression "local_c8[2]" (identifier "local_c8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (labeled_statement "LAB_00254349:\n              local_148[1] = local_148[3];" (statement_identifier "LAB_00254349") (: ":") (expression_statement "local_148[1] = local_148[3];" (assignment_expression "local_148[1] = local_148[3]" (subscript_expression "local_148[1]" (identifier "local_148") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "local_148[3]" (identifier "local_148") ([ "[") (number_literal "3") (] "]"))) (; ";"))) (expression_statement "local_c8[1] = local_c8[3];" (assignment_expression "local_c8[1] = local_c8[3]" (subscript_expression "local_c8[1]" (identifier "local_c8") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "local_c8[3]" (identifier "local_c8") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" (else "else") (if_statement "if (dVar33 <= DAT_00407738) {\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }\n            else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" (if "if") (parenthesized_expression "(dVar33 <= DAT_00407738)" (( "(") (binary_expression "dVar33 <= DAT_00407738" (identifier "dVar33") (<= "<=") (identifier "DAT_00407738")) () ")")) (compound_statement "{\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\n              if (DAT_00407738 < dVar33) goto LAB_002544fd;\n            }" ({ "{") (if_statement "if (_DAT_004294f8 <= dVar33) goto LAB_00254349;" (if "if") (parenthesized_expression "(_DAT_004294f8 <= dVar33)" (( "(") (binary_expression "_DAT_004294f8 <= dVar33" (identifier "_DAT_004294f8") (<= "<=") (identifier "dVar33")) () ")")) (goto_statement "goto LAB_00254349;" (goto "goto") (statement_identifier "LAB_00254349") (; ";"))) (if_statement "if (DAT_00407738 < dVar33) goto LAB_002544fd;" (if "if") (parenthesized_expression "(DAT_00407738 < dVar33)" (( "(") (binary_expression "DAT_00407738 < dVar33" (identifier "DAT_00407738") (< "<") (identifier "dVar33")) () ")")) (goto_statement "goto LAB_002544fd;" (goto "goto") (statement_identifier "LAB_002544fd") (; ";"))) (} "}")) (else_clause "else {\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" (else "else") (compound_statement "{\n              local_148[0] = local_148[0] + local_148[2];\n              local_c8[0] = local_c8[0] + local_c8[2];\n              dVar32 = DAT_00407728;\n              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;\nLAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];\n              local_c8[1] = local_c8[1] + local_c8[3];\n              dVar32 = DAT_00407728;\n            }" ({ "{") (expression_statement "local_148[0] = local_148[0] + local_148[2];" (assignment_expression "local_148[0] = local_148[0] + local_148[2]" (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_148[0] + local_148[2]" (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")) (+ "+") (subscript_expression "local_148[2]" (identifier "local_148") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_c8[0] = local_c8[0] + local_c8[2];" (assignment_expression "local_c8[0] = local_c8[0] + local_c8[2]" (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_c8[0] + local_c8[2]" (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (+ "+") (subscript_expression "local_c8[2]" (identifier "local_c8") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "dVar32 = DAT_00407728;" (assignment_expression "dVar32 = DAT_00407728" (identifier "dVar32") (= "=") (identifier "DAT_00407728")) (; ";")) (if_statement "if (_DAT_004294f8 <= dVar33) goto LAB_00254349;" (if "if") (parenthesized_expression "(_DAT_004294f8 <= dVar33)" (( "(") (binary_expression "_DAT_004294f8 <= dVar33" (identifier "_DAT_004294f8") (<= "<=") (identifier "dVar33")) () ")")) (goto_statement "goto LAB_00254349;" (goto "goto") (statement_identifier "LAB_00254349") (; ";"))) (labeled_statement "LAB_002544fd:\n              local_148[1] = local_148[1] + local_148[3];" (statement_identifier "LAB_002544fd") (: ":") (expression_statement "local_148[1] = local_148[1] + local_148[3];" (assignment_expression "local_148[1] = local_148[1] + local_148[3]" (subscript_expression "local_148[1]" (identifier "local_148") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_148[1] + local_148[3]" (subscript_expression "local_148[1]" (identifier "local_148") ([ "[") (number_literal "1") (] "]")) (+ "+") (subscript_expression "local_148[3]" (identifier "local_148") ([ "[") (number_literal "3") (] "]")))) (; ";"))) (expression_statement "local_c8[1] = local_c8[1] + local_c8[3];" (assignment_expression "local_c8[1] = local_c8[1] + local_c8[3]" (subscript_expression "local_c8[1]" (identifier "local_c8") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_c8[1] + local_c8[3]" (subscript_expression "local_c8[1]" (identifier "local_c8") ([ "[") (number_literal "1") (] "]")) (+ "+") (subscript_expression "local_c8[3]" (identifier "local_c8") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "dVar32 = DAT_00407728;" (assignment_expression "dVar32 = DAT_00407728" (identifier "dVar32") (= "=") (identifier "DAT_00407728")) (; ";")) (} "}")))))) (if_statement "if (param_1 - (double)lVar25 < dVar31) {\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }\n            else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" (if "if") (parenthesized_expression "(param_1 - (double)lVar25 < dVar31)" (( "(") (binary_expression "param_1 - (double)lVar25 < dVar31" (binary_expression "param_1 - (double)lVar25" (identifier "param_1") (- "-") (cast_expression "(double)lVar25" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar25"))) (< "<") (identifier "dVar31")) () ")")) (compound_statement "{\n              if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }\n            }" ({ "{") (if_statement "if (DAT_00407738 < param_1 - (double)lVar25) {\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }" (if "if") (parenthesized_expression "(DAT_00407738 < param_1 - (double)lVar25)" (( "(") (binary_expression "DAT_00407738 < param_1 - (double)lVar25" (identifier "DAT_00407738") (< "<") (binary_expression "param_1 - (double)lVar25" (identifier "param_1") (- "-") (cast_expression "(double)lVar25" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar25")))) () ")")) (compound_statement "{\n                dVar32 = dVar32 + dVar32;\n                local_148[0] = local_148[0] + local_148[1];\n                local_c8[0] = local_c8[0] + local_c8[1];\n              }" ({ "{") (expression_statement "dVar32 = dVar32 + dVar32;" (assignment_expression "dVar32 = dVar32 + dVar32" (identifier "dVar32") (= "=") (binary_expression "dVar32 + dVar32" (identifier "dVar32") (+ "+") (identifier "dVar32"))) (; ";")) (expression_statement "local_148[0] = local_148[0] + local_148[1];" (assignment_expression "local_148[0] = local_148[0] + local_148[1]" (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_148[0] + local_148[1]" (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")) (+ "+") (subscript_expression "local_148[1]" (identifier "local_148") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_c8[0] = local_c8[0] + local_c8[1];" (assignment_expression "local_c8[0] = local_c8[0] + local_c8[1]" (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_c8[0] + local_c8[1]" (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (+ "+") (subscript_expression "local_c8[1]" (identifier "local_c8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" (else "else") (compound_statement "{\n              local_148[0] = local_148[1];\n              local_c8[0] = local_c8[1];\n            }" ({ "{") (expression_statement "local_148[0] = local_148[1];" (assignment_expression "local_148[0] = local_148[1]" (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")) (= "=") (subscript_expression "local_148[1]" (identifier "local_148") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_c8[0] = local_c8[1];" (assignment_expression "local_c8[0] = local_c8[1]" (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (= "=") (subscript_expression "local_c8[1]" (identifier "local_c8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")))) (if_statement "if (uVar23 == 4) {\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }\n            else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" (if "if") (parenthesized_expression "(uVar23 == 4)" (( "(") (binary_expression "uVar23 == 4" (identifier "uVar23") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n              dVar33 = DAT_003fa390;\n              if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }\n            }" ({ "{") (expression_statement "dVar33 = DAT_003fa390;" (assignment_expression "dVar33 = DAT_003fa390" (identifier "dVar33") (= "=") (identifier "DAT_003fa390")) (; ";")) (if_statement "if (dVar26 <= dVar32) {\n                dVar33 = dVar28 / dVar32;\n              }" (if "if") (parenthesized_expression "(dVar26 <= dVar32)" (( "(") (binary_expression "dVar26 <= dVar32" (identifier "dVar26") (<= "<=") (identifier "dVar32")) () ")")) (compound_statement "{\n                dVar33 = dVar28 / dVar32;\n              }" ({ "{") (expression_statement "dVar33 = dVar28 / dVar32;" (assignment_expression "dVar33 = dVar28 / dVar32" (identifier "dVar33") (= "=") (binary_expression "dVar28 / dVar32" (identifier "dVar28") (/ "/") (identifier "dVar32"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" (else "else") (compound_statement "{\n              dVar32 = DAT_003f9c68;\n              if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }\n              if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }\n            }" ({ "{") (expression_statement "dVar32 = DAT_003f9c68;" (assignment_expression "dVar32 = DAT_003f9c68" (identifier "dVar32") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= local_148[0]) {\n                dVar32 = DAT_003f9608;\n              }" (if "if") (parenthesized_expression "(0.0 <= local_148[0])" (( "(") (binary_expression "0.0 <= local_148[0]" (number_literal "0.0") (<= "<=") (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]"))) () ")")) (compound_statement "{\n                dVar32 = DAT_003f9608;\n              }" ({ "{") (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" (identifier "dVar32") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (local_148[0] * dVar32 < dVar26) {\n                dVar33 = dVar32 / dVar26;\n              }\n              else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" (if "if") (parenthesized_expression "(local_148[0] * dVar32 < dVar26)" (( "(") (binary_expression "local_148[0] * dVar32 < dVar26" (binary_expression "local_148[0] * dVar32" (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")) (* "*") (identifier "dVar32")) (< "<") (identifier "dVar26")) () ")")) (compound_statement "{\n                dVar33 = dVar32 / dVar26;\n              }" ({ "{") (expression_statement "dVar33 = dVar32 / dVar26;" (assignment_expression "dVar33 = dVar32 / dVar26" (identifier "dVar33") (= "=") (binary_expression "dVar32 / dVar26" (identifier "dVar32") (/ "/") (identifier "dVar26"))) (; ";")) (} "}")) (else_clause "else {\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" (else "else") (compound_statement "{\n                dVar33 = DAT_003f9608 / local_148[0];\n              }" ({ "{") (expression_statement "dVar33 = DAT_003f9608 / local_148[0];" (assignment_expression "dVar33 = DAT_003f9608 / local_148[0]" (identifier "dVar33") (= "=") (binary_expression "DAT_003f9608 / local_148[0]" (identifier "DAT_003f9608") (/ "/") (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")))) (; ";")) (} "}")))) (} "}")))) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" (identifier "lVar18") (= "=") (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" (identifier "lVar18") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }" (if "if") (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" (( "(") (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" (* "*") (cast_expression "(int *)(lVar18 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 4)" (( "(") (binary_expression "lVar18 + 4" (identifier "lVar18") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);\n            }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0])" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" (* "*") (cast_expression "(long *)(lVar18 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 8)" (( "(") (binary_expression "lVar18 + 8" (identifier "lVar18") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)(dVar33 * local_c8[0])" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar33 * local_c8[0])" (( "(") (binary_expression "dVar33 * local_c8[0]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]"))) () ")")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" (identifier "lVar24") (= "=") (binary_expression "lVar24 + 1" (identifier "lVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" (identifier "pfVar21") (= "=") (binary_expression "pfVar21 + 1" (identifier "pfVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar24 < lVar13)" (( "(") (binary_expression "lVar24 < lVar13" (identifier "lVar24") (< "<") (identifier "lVar13")) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 7:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_00406598;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }\n    break;" (case "case") (number_literal "7") (: ":") (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (identifier "pfVar15") (= "=") (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (( "(") (identifier "param_4") (, ",") (binary_expression "lVar25 + -1" (identifier "lVar25") (+ "+") (number_literal "-1")) (, ",") (binary_expression "local_168 + -1" (identifier "local_168") (+ "+") (number_literal "-1")) (, ",") (number_literal "4") (, ",") (number_literal "4") (, ",") (identifier "param_8") () ")"))))) (; ";")) (expression_statement "dVar28 = DAT_00406598;" (assignment_expression "dVar28 = DAT_00406598" (identifier "dVar28") (= "=") (identifier "DAT_00406598")) (; ";")) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" (identifier "fVar9") (= "=") (identifier "_DAT_003fa400")) (; ";")) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" (identifier "dVar26") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(pfVar15 != (float *)0x0)" (( "(") (binary_expression "pfVar15 != (float *)0x0" (identifier "pfVar15") (!= "!=") (cast_expression "(float *)0x0" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" ({ "{") (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(lVar13 < 1)" (( "(") (binary_expression "lVar13 < 1" (identifier "lVar13") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" (identifier "lVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" (identifier "pfVar21") (= "=") (identifier "pfVar15")) (; ";")) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" (do "do") (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" ({ "{") (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" (identifier "lVar20") (= "=") (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;" (assignment_expression "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (identifier "lVar18") (= "=") (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + lVar24 * 0x10)" (( "(") (binary_expression "lVar20 + lVar24 * 0x10" (identifier "lVar20") (+ "+") (binary_expression "lVar24 * 0x10" (identifier "lVar24") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "uVar23 = *(uint *)(lVar20 + 4 + lVar18);" (assignment_expression "uVar23 = *(uint *)(lVar20 + 4 + lVar18)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(lVar20 + 4 + lVar18)" (* "*") (cast_expression "(uint *)(lVar20 + 4 + lVar18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 4 + lVar18)" (( "(") (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" (identifier "lVar20") (+ "+") (number_literal "4")) (+ "+") (identifier "lVar18")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }" (if "if") (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0))" (( "(") (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" (* "*") (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" (( "(") (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar34 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar34;\n            dVar32 = dVar34 * dVar28 * dVar31;\n            dVar35 = dVar31 * dVar32;\n            dVar32 = dVar32 * dVar34;\n            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);\n            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);\n            dVar31 = param_2 - (double)local_168;\n            dVar36 = dVar26 - dVar31;\n            dVar38 = dVar31 * dVar28 * dVar36;\n            dVar34 = dVar36 * dVar38;\n            dVar38 = dVar38 * dVar31;\n            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);\n            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);\n            dVar31 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }\n          }" ({ "{") (expression_statement "uVar23 = uVar23 & 4;" (assignment_expression "uVar23 = uVar23 & 4" (identifier "uVar23") (= "=") (binary_expression "uVar23 & 4" (identifier "uVar23") (& "&") (number_literal "4"))) (; ";")) (if_statement "if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" (if "if") (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }" ({ "{") (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" (identifier "lVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" (identifier "pfVar19") (= "=") (identifier "pfVar21")) (; ";")) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);" (do "do") (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" ({ "{") (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" (identifier "local_148") ([ "[") (identifier "lVar20") (] "]")) (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" (identifier "local_c8") ([ "[") (identifier "lVar20") (] "]")) (= "=") (cast_expression "(double)*pfVar19" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*pfVar19" (* "*") (identifier "pfVar19")))) (; ";")) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" (identifier "lVar20") (= "=") (binary_expression "lVar20 + 1" (identifier "lVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" (identifier "pfVar19") (= "=") (binary_expression "pfVar19 + lVar13" (identifier "pfVar19") (+ "+") (identifier "lVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar20 != 0x10)" (( "(") (binary_expression "lVar20 != 0x10" (identifier "lVar20") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (} "}")) (else_clause "else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" (else "else") (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" ({ "{") (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar20 + 0x44)" (* "*") (cast_expression "(int *)(lVar20 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 0x44)" (( "(") (binary_expression "lVar20 + 0x44" (identifier "lVar20") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" (identifier "lVar22") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" (identifier "lVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);" (do "do") (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" ({ "{") (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" (identifier "fVar2") (= "=") (identifier "fVar9")) (; ";")) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" ({ "{") (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" (identifier "fVar2") (= "=") (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" (identifier "pfVar15") ([ "[") (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" (identifier "lVar22") (+ "+") (pointer_expression "*(long *)(lVar20 + 0x48)" (* "*") (cast_expression "(long *)(lVar20 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 0x48)" (( "(") (binary_expression "lVar20 + 0x48" (identifier "lVar20") (+ "+") (number_literal "0x48")) () ")"))))) (] "]"))) (; ";")) (} "}"))) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" (identifier "local_148") ([ "[") (identifier "lVar17") (] "]")) (= "=") (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar2")) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" (identifier "local_c8") ([ "[") (identifier "lVar17") (] "]")) (= "=") (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar2")) (* "*") (identifier "DAT_003f9c60")) (* "*") (cast_expression "(double)pfVar21[lVar22]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "pfVar21[lVar22]" (identifier "pfVar21") ([ "[") (identifier "lVar22") (] "]"))))) (; ";")) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" (identifier "lVar22") (= "=") (binary_expression "lVar22 + lVar13" (identifier "lVar22") (+ "+") (identifier "lVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar17 != 0x10)" (( "(") (binary_expression "lVar17 != 0x10" (identifier "lVar17") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (} "}")))) (expression_statement "dVar34 = param_1 - (double)lVar25;" (assignment_expression "dVar34 = param_1 - (double)lVar25" (identifier "dVar34") (= "=") (binary_expression "param_1 - (double)lVar25" (identifier "param_1") (- "-") (cast_expression "(double)lVar25" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar25")))) (; ";")) (expression_statement "dVar31 = dVar26 - dVar34;" (assignment_expression "dVar31 = dVar26 - dVar34" (identifier "dVar31") (= "=") (binary_expression "dVar26 - dVar34" (identifier "dVar26") (- "-") (identifier "dVar34"))) (; ";")) (expression_statement "dVar32 = dVar34 * dVar28 * dVar31;" (assignment_expression "dVar32 = dVar34 * dVar28 * dVar31" (identifier "dVar32") (= "=") (binary_expression "dVar34 * dVar28 * dVar31" (binary_expression "dVar34 * dVar28" (identifier "dVar34") (* "*") (identifier "dVar28")) (* "*") (identifier "dVar31"))) (; ";")) (expression_statement "dVar35 = dVar31 * dVar32;" (assignment_expression "dVar35 = dVar31 * dVar32" (identifier "dVar35") (= "=") (binary_expression "dVar31 * dVar32" (identifier "dVar31") (* "*") (identifier "dVar32"))) (; ";")) (expression_statement "dVar32 = dVar32 * dVar34;" (assignment_expression "dVar32 = dVar32 * dVar34" (identifier "dVar32") (= "=") (binary_expression "dVar32 * dVar34" (identifier "dVar32") (* "*") (identifier "dVar34"))) (; ";")) (expression_statement "dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);" (assignment_expression "dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35)" (identifier "dVar33") (= "=") (binary_expression "(dVar31 - dVar35) + (dVar32 - dVar35)" (parenthesized_expression "(dVar31 - dVar35)" (( "(") (binary_expression "dVar31 - dVar35" (identifier "dVar31") (- "-") (identifier "dVar35")) () ")")) (+ "+") (parenthesized_expression "(dVar32 - dVar35)" (( "(") (binary_expression "dVar32 - dVar35" (identifier "dVar32") (- "-") (identifier "dVar35")) () ")")))) (; ";")) (expression_statement "dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);" (assignment_expression "dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35)" (identifier "dVar37") (= "=") (binary_expression "(dVar34 - dVar32) - (dVar32 - dVar35)" (parenthesized_expression "(dVar34 - dVar32)" (( "(") (binary_expression "dVar34 - dVar32" (identifier "dVar34") (- "-") (identifier "dVar32")) () ")")) (- "-") (parenthesized_expression "(dVar32 - dVar35)" (( "(") (binary_expression "dVar32 - dVar35" (identifier "dVar32") (- "-") (identifier "dVar35")) () ")")))) (; ";")) (expression_statement "dVar31 = param_2 - (double)local_168;" (assignment_expression "dVar31 = param_2 - (double)local_168" (identifier "dVar31") (= "=") (binary_expression "param_2 - (double)local_168" (identifier "param_2") (- "-") (cast_expression "(double)local_168" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "local_168")))) (; ";")) (expression_statement "dVar36 = dVar26 - dVar31;" (assignment_expression "dVar36 = dVar26 - dVar31" (identifier "dVar36") (= "=") (binary_expression "dVar26 - dVar31" (identifier "dVar26") (- "-") (identifier "dVar31"))) (; ";")) (expression_statement "dVar38 = dVar31 * dVar28 * dVar36;" (assignment_expression "dVar38 = dVar31 * dVar28 * dVar36" (identifier "dVar38") (= "=") (binary_expression "dVar31 * dVar28 * dVar36" (binary_expression "dVar31 * dVar28" (identifier "dVar31") (* "*") (identifier "dVar28")) (* "*") (identifier "dVar36"))) (; ";")) (expression_statement "dVar34 = dVar36 * dVar38;" (assignment_expression "dVar34 = dVar36 * dVar38" (identifier "dVar34") (= "=") (binary_expression "dVar36 * dVar38" (identifier "dVar36") (* "*") (identifier "dVar38"))) (; ";")) (expression_statement "dVar38 = dVar38 * dVar31;" (assignment_expression "dVar38 = dVar38 * dVar31" (identifier "dVar38") (= "=") (binary_expression "dVar38 * dVar31" (identifier "dVar38") (* "*") (identifier "dVar31"))) (; ";")) (expression_statement "dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);" (assignment_expression "dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34)" (identifier "dVar27") (= "=") (binary_expression "(dVar36 - dVar34) + (dVar38 - dVar34)" (parenthesized_expression "(dVar36 - dVar34)" (( "(") (binary_expression "dVar36 - dVar34" (identifier "dVar36") (- "-") (identifier "dVar34")) () ")")) (+ "+") (parenthesized_expression "(dVar38 - dVar34)" (( "(") (binary_expression "dVar38 - dVar34" (identifier "dVar38") (- "-") (identifier "dVar34")) () ")")))) (; ";")) (expression_statement "dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);" (assignment_expression "dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34)" (identifier "dVar36") (= "=") (binary_expression "(dVar31 - dVar38) - (dVar38 - dVar34)" (parenthesized_expression "(dVar31 - dVar38)" (( "(") (binary_expression "dVar31 - dVar38" (identifier "dVar31") (- "-") (identifier "dVar38")) () ")")) (- "-") (parenthesized_expression "(dVar38 - dVar34)" (( "(") (binary_expression "dVar38 - dVar34" (identifier "dVar38") (- "-") (identifier "dVar34")) () ")")))) (; ";")) (expression_statement "dVar31 = DAT_003f9608;" (assignment_expression "dVar31 = DAT_003f9608" (identifier "dVar31") (= "=") (identifier "DAT_003f9608")) (; ";")) (if_statement "if (uVar23 == 0) {\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" (if "if") (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }\n            }" ({ "{") (expression_statement "dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38;" (assignment_expression "dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" (identifier "dVar31") (= "=") (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27 +\n                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34 +\n                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36 +\n                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34" (binary_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]) * dVar36" (parenthesized_expression "(dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb])" (( "(") (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +\n                       dVar32 * local_148[0xb]" (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9]" (binary_expression "dVar37 * local_148[10] + dVar35 * local_148[8]" (binary_expression "dVar37 * local_148[10]" (identifier "dVar37") (* "*") (subscript_expression "local_148[10]" (identifier "local_148") ([ "[") (number_literal "10") (] "]"))) (+ "+") (binary_expression "dVar35 * local_148[8]" (identifier "dVar35") (* "*") (subscript_expression "local_148[8]" (identifier "local_148") ([ "[") (number_literal "8") (] "]")))) (+ "+") (binary_expression "dVar33 * local_148[9]" (identifier "dVar33") (* "*") (subscript_expression "local_148[9]" (identifier "local_148") ([ "[") (number_literal "9") (] "]")))) (+ "+") (binary_expression "dVar32 * local_148[0xb]" (identifier "dVar32") (* "*") (subscript_expression "local_148[0xb]" (identifier "local_148") ([ "[") (number_literal "0xb") (] "]")))) () ")")) (* "*") (identifier "dVar36")) (+ "+") (binary_expression "(dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]) * dVar34" (parenthesized_expression "(dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3])" (( "(") (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +\n                       dVar32 * local_148[3]" (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2]" (binary_expression "dVar35 * local_148[0] + dVar33 * local_148[1]" (binary_expression "dVar35 * local_148[0]" (identifier "dVar35") (* "*") (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]"))) (+ "+") (binary_expression "dVar33 * local_148[1]" (identifier "dVar33") (* "*") (subscript_expression "local_148[1]" (identifier "local_148") ([ "[") (number_literal "1") (] "]")))) (+ "+") (binary_expression "dVar37 * local_148[2]" (identifier "dVar37") (* "*") (subscript_expression "local_148[2]" (identifier "local_148") ([ "[") (number_literal "2") (] "]")))) (+ "+") (binary_expression "dVar32 * local_148[3]" (identifier "dVar32") (* "*") (subscript_expression "local_148[3]" (identifier "local_148") ([ "[") (number_literal "3") (] "]")))) () ")")) (* "*") (identifier "dVar34"))) (+ "+") (binary_expression "(dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]) * dVar27" (parenthesized_expression "(dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7])" (( "(") (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +\n                       dVar32 * local_148[7]" (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5]" (binary_expression "dVar37 * local_148[6] + dVar35 * local_148[4]" (binary_expression "dVar37 * local_148[6]" (identifier "dVar37") (* "*") (subscript_expression "local_148[6]" (identifier "local_148") ([ "[") (number_literal "6") (] "]"))) (+ "+") (binary_expression "dVar35 * local_148[4]" (identifier "dVar35") (* "*") (subscript_expression "local_148[4]" (identifier "local_148") ([ "[") (number_literal "4") (] "]")))) (+ "+") (binary_expression "dVar33 * local_148[5]" (identifier "dVar33") (* "*") (subscript_expression "local_148[5]" (identifier "local_148") ([ "[") (number_literal "5") (] "]")))) (+ "+") (binary_expression "dVar32 * local_148[7]" (identifier "dVar32") (* "*") (subscript_expression "local_148[7]" (identifier "local_148") ([ "[") (number_literal "7") (] "]")))) () ")")) (* "*") (identifier "dVar27"))) (+ "+") (binary_expression "(dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]) * dVar38" (parenthesized_expression "(dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf])" (( "(") (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]\n                       + dVar32 * local_148[0xf]" (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]" (binary_expression "dVar37 * local_148[0xe] + dVar35 * local_148[0xc]" (binary_expression "dVar37 * local_148[0xe]" (identifier "dVar37") (* "*") (subscript_expression "local_148[0xe]" (identifier "local_148") ([ "[") (number_literal "0xe") (] "]"))) (+ "+") (binary_expression "dVar35 * local_148[0xc]" (identifier "dVar35") (* "*") (subscript_expression "local_148[0xc]" (identifier "local_148") ([ "[") (number_literal "0xc") (] "]")))) (+ "+") (binary_expression "dVar33 * local_148[0xd]" (identifier "dVar33") (* "*") (subscript_expression "local_148[0xd]" (identifier "local_148") ([ "[") (number_literal "0xd") (] "]")))) (+ "+") (binary_expression "dVar32 * local_148[0xf]" (identifier "dVar32") (* "*") (subscript_expression "local_148[0xf]" (identifier "local_148") ([ "[") (number_literal "0xf") (] "]")))) () ")")) (* "*") (identifier "dVar38")))) (; ";")) (expression_statement "dVar30 = DAT_003f9c68;" (assignment_expression "dVar30 = DAT_003f9c68" (identifier "dVar30") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar31) {\n                dVar30 = DAT_003f9608;\n              }" (if "if") (parenthesized_expression "(0.0 <= dVar31)" (( "(") (binary_expression "0.0 <= dVar31" (number_literal "0.0") (<= "<=") (identifier "dVar31")) () ")")) (compound_statement "{\n                dVar30 = DAT_003f9608;\n              }" ({ "{") (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" (identifier "dVar30") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar31 * dVar30 < DAT_003f9600) {\n                dVar31 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" (if "if") (parenthesized_expression "(dVar31 * dVar30 < DAT_003f9600)" (( "(") (binary_expression "dVar31 * dVar30 < DAT_003f9600" (binary_expression "dVar31 * dVar30" (identifier "dVar31") (* "*") (identifier "dVar30")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                dVar31 = dVar30 / DAT_003f9600;\n              }" ({ "{") (expression_statement "dVar31 = dVar30 / DAT_003f9600;" (assignment_expression "dVar31 = dVar30 / DAT_003f9600" (identifier "dVar31") (= "=") (binary_expression "dVar30 / DAT_003f9600" (identifier "dVar30") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                dVar31 = DAT_003f9608 / dVar31;\n              }" (else "else") (compound_statement "{\n                dVar31 = DAT_003f9608 / dVar31;\n              }" ({ "{") (expression_statement "dVar31 = DAT_003f9608 / dVar31;" (assignment_expression "dVar31 = DAT_003f9608 / dVar31" (identifier "dVar31") (= "=") (binary_expression "DAT_003f9608 / dVar31" (identifier "DAT_003f9608") (/ "/") (identifier "dVar31"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" (identifier "lVar18") (= "=") (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" (identifier "lVar18") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }" (if "if") (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" (( "(") (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" (* "*") (cast_expression "(int *)(lVar18 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 4)" (( "(") (binary_expression "lVar18 + 4" (identifier "lVar18") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);\n            }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" (* "*") (cast_expression "(long *)(lVar18 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 8)" (( "(") (binary_expression "lVar18 + 8" (identifier "lVar18") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31)" (( "(") (binary_expression "(dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38) * dVar31" (parenthesized_expression "(dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38)" (( "(") (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +\n                           (dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27 +\n                            dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]) +\n                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27" (binary_expression "dVar34 * (dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3])" (identifier "dVar34") (* "*") (parenthesized_expression "(dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3])" (( "(") (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +\n                                     dVar32 * local_c8[3]" (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0] + dVar33 * local_c8[1]" (binary_expression "dVar37 * local_c8[2] +\n                                      dVar35 * local_c8[0]" (binary_expression "dVar37 * local_c8[2]" (identifier "dVar37") (* "*") (subscript_expression "local_c8[2]" (identifier "local_c8") ([ "[") (number_literal "2") (] "]"))) (+ "+") (binary_expression "dVar35 * local_c8[0]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")))) (+ "+") (binary_expression "dVar33 * local_c8[1]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[1]" (identifier "local_c8") ([ "[") (number_literal "1") (] "]")))) (+ "+") (binary_expression "dVar32 * local_c8[3]" (identifier "dVar32") (* "*") (subscript_expression "local_c8[3]" (identifier "local_c8") ([ "[") (number_literal "3") (] "]")))) () ")"))) (+ "+") (binary_expression "(dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]) * dVar27" (parenthesized_expression "(dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7])" (( "(") (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +\n                            dVar32 * local_c8[7]" (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5]" (binary_expression "dVar37 * local_c8[6] + dVar35 * local_c8[4]" (binary_expression "dVar37 * local_c8[6]" (identifier "dVar37") (* "*") (subscript_expression "local_c8[6]" (identifier "local_c8") ([ "[") (number_literal "6") (] "]"))) (+ "+") (binary_expression "dVar35 * local_c8[4]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[4]" (identifier "local_c8") ([ "[") (number_literal "4") (] "]")))) (+ "+") (binary_expression "dVar33 * local_c8[5]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[5]" (identifier "local_c8") ([ "[") (number_literal "5") (] "]")))) (+ "+") (binary_expression "dVar32 * local_c8[7]" (identifier "dVar32") (* "*") (subscript_expression "local_c8[7]" (identifier "local_c8") ([ "[") (number_literal "7") (] "]")))) () ")")) (* "*") (identifier "dVar27"))) (+ "+") (binary_expression "dVar36 * (dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" (identifier "dVar36") (* "*") (parenthesized_expression "(dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9])" (( "(") (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]" (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10] +\n                                     dVar35 * local_c8[8]" (binary_expression "dVar32 * local_c8[0xb] +\n                                     dVar37 * local_c8[10]" (binary_expression "dVar32 * local_c8[0xb]" (identifier "dVar32") (* "*") (subscript_expression "local_c8[0xb]" (identifier "local_c8") ([ "[") (number_literal "0xb") (] "]"))) (+ "+") (binary_expression "dVar37 * local_c8[10]" (identifier "dVar37") (* "*") (subscript_expression "local_c8[10]" (identifier "local_c8") ([ "[") (number_literal "10") (] "]")))) (+ "+") (binary_expression "dVar35 * local_c8[8]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[8]" (identifier "local_c8") ([ "[") (number_literal "8") (] "]")))) (+ "+") (binary_expression "dVar33 * local_c8[9]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[9]" (identifier "local_c8") ([ "[") (number_literal "9") (] "]")))) () ")")))) (+ "+") (binary_expression "(dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])\n                           * dVar38" (parenthesized_expression "(dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])" (( "(") (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd]" (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc]" (binary_expression "dVar32 * local_c8[0xf] +\n                           dVar37 * local_c8[0xe]" (binary_expression "dVar32 * local_c8[0xf]" (identifier "dVar32") (* "*") (subscript_expression "local_c8[0xf]" (identifier "local_c8") ([ "[") (number_literal "0xf") (] "]"))) (+ "+") (binary_expression "dVar37 * local_c8[0xe]" (identifier "dVar37") (* "*") (subscript_expression "local_c8[0xe]" (identifier "local_c8") ([ "[") (number_literal "0xe") (] "]")))) (+ "+") (binary_expression "dVar35 * local_c8[0xc]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[0xc]" (identifier "local_c8") ([ "[") (number_literal "0xc") (] "]")))) (+ "+") (binary_expression "dVar33 * local_c8[0xd]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[0xd]" (identifier "local_c8") ([ "[") (number_literal "0xd") (] "]")))) () ")")) (* "*") (identifier "dVar38"))) () ")")) (* "*") (identifier "dVar31")) () ")")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" (identifier "lVar24") (= "=") (binary_expression "lVar24 + 1" (identifier "lVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" (identifier "pfVar21") (= "=") (binary_expression "pfVar21 + 1" (identifier "pfVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar24 < lVar13)" (( "(") (binary_expression "lVar24 < lVar13" (identifier "lVar24") (< "<") (identifier "lVar13")) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 8:\n    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;" (case "case") (number_literal "8") (: ":") (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8)" (identifier "lVar25") (= "=") (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,lVar25,local_168,1,1,param_8)" (( "(") (identifier "param_4") (, ",") (identifier "lVar25") (, ",") (identifier "local_168") (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (identifier "param_8") () ")")))) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(lVar25 != 0)" (( "(") (binary_expression "lVar25 != 0" (identifier "lVar25") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" ({ "{") (if_statement "if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_3 + 0x340) < 1)" (( "(") (binary_expression "*(long *)(param_3 + 0x340) < 1" (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")")))) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" (identifier "lVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));" (do "do") (compound_statement "{\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        }" ({ "{") (expression_statement "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;" (assignment_expression "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (identifier "lVar24") (= "=") (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (( "(") (binary_expression "*(long *)(param_3 + 0x360) + lVar13 * 0x10" (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (binary_expression "lVar13 * 0x10" (identifier "lVar13") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x10"))) (; ";")) (if_statement "if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" (if "if") (parenthesized_expression "(((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0))" (( "(") (binary_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0))" (( "(") (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" (* "*") (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar24)" (( "(") (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" (* "*") (cast_expression "(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 0x360) + 4 + lVar24)" (( "(") (binary_expression "*(long *)(param_3 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_3 + 0x360) + 4" (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar24")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (( "(") (comma_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0" (assignment_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360)" (identifier "lVar24") (= "=") (binary_expression "lVar24 + *(long *)(param_5 + 0x360)" (identifier "lVar24") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (, ",") (binary_expression "*(int *)(lVar24 + 4) != 0" (pointer_expression "*(int *)(lVar24 + 4)" (* "*") (cast_expression "(int *)(lVar24 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + 4)" (( "(") (binary_expression "lVar24 + 4" (identifier "lVar24") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);" (assignment_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4)" (pointer_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" (* "*") (cast_expression "(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar24 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar24 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar24 + 8) * 4" (pointer_expression "*(long *)(lVar24 + 8)" (* "*") (cast_expression "(long *)(lVar24 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + 8)" (( "(") (binary_expression "lVar24 + 8" (identifier "lVar24") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar25 + lVar13 * 4)" (* "*") (cast_expression "(undefined4 *)(lVar25 + lVar13 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + lVar13 * 4)" (( "(") (binary_expression "lVar25 + lVar13 * 4" (identifier "lVar25") (+ "+") (binary_expression "lVar13 * 4" (identifier "lVar13") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 1" (identifier "lVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar13 < *(long *)(param_3 + 0x340))" (( "(") (binary_expression "lVar13 < *(long *)(param_3 + 0x340)" (identifier "lVar13") (< "<") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 9:\n    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);\n    fVar12 = DAT_0041abe0;\n    fVar2 = DAT_0041abdc;\n    fVar9 = DAT_0041abd8;\n    uVar11 = DAT_003f9c70;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }\n    break;" (case "case") (number_literal "9") (: ":") (expression_statement "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);" (assignment_expression "lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" (identifier "lVar13") (= "=") (call_expression "GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,lVar25,local_168,2,2,param_8)" (( "(") (identifier "param_4") (, ",") (identifier "lVar25") (, ",") (identifier "local_168") (, ",") (number_literal "2") (, ",") (number_literal "2") (, ",") (identifier "param_8") () ")")))) (; ";")) (expression_statement "fVar12 = DAT_0041abe0;" (assignment_expression "fVar12 = DAT_0041abe0" (identifier "fVar12") (= "=") (identifier "DAT_0041abe0")) (; ";")) (expression_statement "fVar2 = DAT_0041abdc;" (assignment_expression "fVar2 = DAT_0041abdc" (identifier "fVar2") (= "=") (identifier "DAT_0041abdc")) (; ";")) (expression_statement "fVar9 = DAT_0041abd8;" (assignment_expression "fVar9 = DAT_0041abd8" (identifier "fVar9") (= "=") (identifier "DAT_0041abd8")) (; ";")) (expression_statement "uVar11 = DAT_003f9c70;" (assignment_expression "uVar11 = DAT_003f9c70" (identifier "uVar11") (= "=") (identifier "DAT_003f9c70")) (; ";")) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" (identifier "dVar26") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar13 != 0) {\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(lVar13 != 0)" (( "(") (binary_expression "lVar13 != 0" (identifier "lVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar24 = *(long *)(param_3 + 0x340);\n      if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }\n    }" ({ "{") (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" (identifier "lVar24") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (if_statement "if (lVar24 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(lVar24 < 1)" (( "(") (binary_expression "lVar24 < 1" (identifier "lVar24") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        lVar20 = 0;\n        do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" (identifier "lVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        } while (lVar20 < lVar24);" (do "do") (compound_statement "{\n          lVar18 = *(long *)(param_3 + 0x360);\n          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar18 + 4 + lVar17);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }\n          lVar20 = lVar20 + 1;\n          lVar24 = *(long *)(param_3 + 0x340);\n        }" ({ "{") (expression_statement "lVar18 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar18 = *(long *)(param_3 + 0x360)" (identifier "lVar18") (= "=") (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;" (assignment_expression "lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (identifier "lVar17") (= "=") (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar18 + lVar20 * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar18 + lVar20 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + lVar20 * 0x10)" (( "(") (binary_expression "lVar18 + lVar20 * 0x10" (identifier "lVar18") (+ "+") (binary_expression "lVar20 * 0x10" (identifier "lVar20") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "uVar23 = *(uint *)(lVar18 + 4 + lVar17);" (assignment_expression "uVar23 = *(uint *)(lVar18 + 4 + lVar17)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(lVar18 + 4 + lVar17)" (* "*") (cast_expression "(uint *)(lVar18 + 4 + lVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 4 + lVar17)" (( "(") (binary_expression "lVar18 + 4 + lVar17" (binary_expression "lVar18 + 4" (identifier "lVar18") (+ "+") (number_literal "4")) (+ "+") (identifier "lVar17")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }" (if "if") (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0))" (( "(") (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17)" (* "*") (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar17)" (( "(") (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar17" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar17")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);\n            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);\n            lVar22 = lVar20 + lVar24 * 2;\n            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);\n            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);\n            dVar28 = dVar26;\n            if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }\n            dVar37 = param_1 - (double)lVar25;\n            dVar38 = param_2 - (double)local_168;\n            lVar24 = *(long *)(param_3 + 0x360);\n            lVar5 = *(long *)(lVar24 + 8);\n            lVar6 = *(long *)(lVar24 + 0x18);\n            lVar7 = *(long *)(lVar24 + 0x28);\n            lVar22 = *(long *)(param_3 + 0x340);\n            lVar24 = lVar13 + lVar22 * 0xc;\n            lVar18 = lVar24 + lVar22 * -8;\n            lVar22 = lVar18 + lVar22 * 4;\n            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }\n          }" ({ "{") (expression_statement "dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);" (assignment_expression "dVar34 = (double)*(float *)(lVar13 + lVar20 * 4)" (identifier "dVar34") (= "=") (cast_expression "(double)*(float *)(lVar13 + lVar20 * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar20 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar20 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar20 * 4)" (( "(") (binary_expression "lVar13 + lVar20 * 4" (identifier "lVar13") (+ "+") (binary_expression "lVar20 * 4" (identifier "lVar20") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);" (assignment_expression "dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" (identifier "dVar32") (= "=") (cast_expression "(double)*(float *)(lVar13 + (lVar20 + lVar24) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + (lVar20 + lVar24) * 4)" (* "*") (cast_expression "(float *)(lVar13 + (lVar20 + lVar24) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + (lVar20 + lVar24) * 4)" (( "(") (binary_expression "lVar13 + (lVar20 + lVar24) * 4" (identifier "lVar13") (+ "+") (binary_expression "(lVar20 + lVar24) * 4" (parenthesized_expression "(lVar20 + lVar24)" (( "(") (binary_expression "lVar20 + lVar24" (identifier "lVar20") (+ "+") (identifier "lVar24")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "lVar22 = lVar20 + lVar24 * 2;" (assignment_expression "lVar22 = lVar20 + lVar24 * 2" (identifier "lVar22") (= "=") (binary_expression "lVar20 + lVar24 * 2" (identifier "lVar20") (+ "+") (binary_expression "lVar24 * 2" (identifier "lVar24") (* "*") (number_literal "2")))) (; ";")) (expression_statement "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);" (assignment_expression "dVar33 = (double)*(float *)(lVar13 + lVar22 * 4)" (identifier "dVar33") (= "=") (cast_expression "(double)*(float *)(lVar13 + lVar22 * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar22 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 * 4)" (( "(") (binary_expression "lVar13 + lVar22 * 4" (identifier "lVar13") (+ "+") (binary_expression "lVar22 * 4" (identifier "lVar22") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);" (assignment_expression "dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" (identifier "dVar31") (= "=") (cast_expression "(double)*(float *)(lVar13 + (lVar22 + lVar24) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + (lVar22 + lVar24) * 4)" (* "*") (cast_expression "(float *)(lVar13 + (lVar22 + lVar24) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + (lVar22 + lVar24) * 4)" (( "(") (binary_expression "lVar13 + (lVar22 + lVar24) * 4" (identifier "lVar13") (+ "+") (binary_expression "(lVar22 + lVar24) * 4" (parenthesized_expression "(lVar22 + lVar24)" (( "(") (binary_expression "lVar22 + lVar24" (identifier "lVar22") (+ "+") (identifier "lVar24")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "dVar28 = dVar26;" (assignment_expression "dVar28 = dVar26" (identifier "dVar28") (= "=") (identifier "dVar26")) (; ";")) (if_statement "if ((uVar23 & 4) == 0) {\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }\n            else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" (if "if") (parenthesized_expression "((uVar23 & 4) == 0)" (( "(") (binary_expression "(uVar23 & 4) == 0" (parenthesized_expression "(uVar23 & 4)" (( "(") (binary_expression "uVar23 & 4" (identifier "uVar23") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              local_160 = dVar26;\n              dVar36 = DAT_003f9608;\n              dVar35 = dVar26;\n            }" ({ "{") (expression_statement "local_160 = dVar26;" (assignment_expression "local_160 = dVar26" (identifier "local_160") (= "=") (identifier "dVar26")) (; ";")) (expression_statement "dVar36 = DAT_003f9608;" (assignment_expression "dVar36 = DAT_003f9608" (identifier "dVar36") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "dVar35 = dVar26;" (assignment_expression "dVar35 = dVar26" (identifier "dVar35") (= "=") (identifier "dVar26")) (; ";")) (} "}")) (else_clause "else {\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" (else "else") (compound_statement "{\n              if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }\n              dVar36 = (double)fVar8 * DAT_003f9c60;\n            }" ({ "{") (if_statement "if (*(int *)(lVar18 + 0x44) == 0) {\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }\n              else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" (if "if") (parenthesized_expression "(*(int *)(lVar18 + 0x44) == 0)" (( "(") (binary_expression "*(int *)(lVar18 + 0x44) == 0" (pointer_expression "*(int *)(lVar18 + 0x44)" (* "*") (cast_expression "(int *)(lVar18 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x44)" (( "(") (binary_expression "lVar18 + 0x44" (identifier "lVar18") (+ "+") (number_literal "0x44")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_160 = dVar26;\n                dVar35 = DAT_003f9608;\n                fVar8 = _DAT_003fa400;\n              }" ({ "{") (expression_statement "local_160 = dVar26;" (assignment_expression "local_160 = dVar26" (identifier "local_160") (= "=") (identifier "dVar26")) (; ";")) (expression_statement "dVar35 = DAT_003f9608;" (assignment_expression "dVar35 = DAT_003f9608" (identifier "dVar35") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "fVar8 = _DAT_003fa400;" (assignment_expression "fVar8 = _DAT_003fa400" (identifier "fVar8") (= "=") (identifier "_DAT_003fa400")) (; ";")) (} "}")) (else_clause "else {\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" (else "else") (compound_statement "{\n                lVar22 = *(long *)(lVar18 + 0x48) * 4;\n                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;\n                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;\n                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;\n                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);\n              }" ({ "{") (expression_statement "lVar22 = *(long *)(lVar18 + 0x48) * 4;" (assignment_expression "lVar22 = *(long *)(lVar18 + 0x48) * 4" (identifier "lVar22") (= "=") (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" (* "*") (cast_expression "(long *)(lVar18 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x48)" (( "(") (binary_expression "lVar18 + 0x48" (identifier "lVar18") (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) (; ";")) (expression_statement "local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;" (assignment_expression "local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (identifier "local_160") (= "=") (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 4)" (( "(") (binary_expression "lVar13 + lVar22 + lVar24 * 4" (binary_expression "lVar13 + lVar22" (identifier "lVar13") (+ "+") (identifier "lVar22")) (+ "+") (binary_expression "lVar24 * 4" (identifier "lVar24") (* "*") (number_literal "4"))) () ")"))))) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;" (assignment_expression "dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (identifier "dVar28") (= "=") (binary_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (* "*") (cast_expression "(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + *(long *)(lVar18 + 0x48) * 4)" (( "(") (binary_expression "lVar13 + *(long *)(lVar18 + 0x48) * 4" (identifier "lVar13") (+ "+") (binary_expression "*(long *)(lVar18 + 0x48) * 4" (pointer_expression "*(long *)(lVar18 + 0x48)" (* "*") (cast_expression "(long *)(lVar18 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 0x48)" (( "(") (binary_expression "lVar18 + 0x48" (identifier "lVar18") (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;" (assignment_expression "dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (identifier "dVar35") (= "=") (binary_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60" (cast_expression "(double)*(float *)(lVar13 + lVar22 + lVar24 * 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 8)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 8)" (( "(") (binary_expression "lVar13 + lVar22 + lVar24 * 8" (binary_expression "lVar13 + lVar22" (identifier "lVar13") (+ "+") (identifier "lVar22")) (+ "+") (binary_expression "lVar24 * 8" (identifier "lVar24") (* "*") (number_literal "8"))) () ")"))))) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);" (assignment_expression "fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc)" (identifier "fVar8") (= "=") (pointer_expression "*(float *)(lVar13 + lVar22 + lVar24 * 0xc)" (* "*") (cast_expression "(float *)(lVar13 + lVar22 + lVar24 * 0xc)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar22 + lVar24 * 0xc)" (( "(") (binary_expression "lVar13 + lVar22 + lVar24 * 0xc" (binary_expression "lVar13 + lVar22" (identifier "lVar13") (+ "+") (identifier "lVar22")) (+ "+") (binary_expression "lVar24 * 0xc" (identifier "lVar24") (* "*") (number_literal "0xc"))) () ")"))))) (; ";")) (} "}")))) (expression_statement "dVar36 = (double)fVar8 * DAT_003f9c60;" (assignment_expression "dVar36 = (double)fVar8 * DAT_003f9c60" (identifier "dVar36") (= "=") (binary_expression "(double)fVar8 * DAT_003f9c60" (cast_expression "(double)fVar8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar8")) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (} "}")))) (expression_statement "dVar37 = param_1 - (double)lVar25;" (assignment_expression "dVar37 = param_1 - (double)lVar25" (identifier "dVar37") (= "=") (binary_expression "param_1 - (double)lVar25" (identifier "param_1") (- "-") (cast_expression "(double)lVar25" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar25")))) (; ";")) (expression_statement "dVar38 = param_2 - (double)local_168;" (assignment_expression "dVar38 = param_2 - (double)local_168" (identifier "dVar38") (= "=") (binary_expression "param_2 - (double)local_168" (identifier "param_2") (- "-") (cast_expression "(double)local_168" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "local_168")))) (; ";")) (expression_statement "lVar24 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x360)" (identifier "lVar24") (= "=") (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "lVar5 = *(long *)(lVar24 + 8);" (assignment_expression "lVar5 = *(long *)(lVar24 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(lVar24 + 8)" (* "*") (cast_expression "(long *)(lVar24 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + 8)" (( "(") (binary_expression "lVar24 + 8" (identifier "lVar24") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar6 = *(long *)(lVar24 + 0x18);" (assignment_expression "lVar6 = *(long *)(lVar24 + 0x18)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar24 + 0x18)" (* "*") (cast_expression "(long *)(lVar24 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + 0x18)" (( "(") (binary_expression "lVar24 + 0x18" (identifier "lVar24") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "lVar7 = *(long *)(lVar24 + 0x28);" (assignment_expression "lVar7 = *(long *)(lVar24 + 0x28)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(lVar24 + 0x28)" (* "*") (cast_expression "(long *)(lVar24 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + 0x28)" (( "(") (binary_expression "lVar24 + 0x28" (identifier "lVar24") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "lVar22 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar22 = *(long *)(param_3 + 0x340)" (identifier "lVar22") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (expression_statement "lVar24 = lVar13 + lVar22 * 0xc;" (assignment_expression "lVar24 = lVar13 + lVar22 * 0xc" (identifier "lVar24") (= "=") (binary_expression "lVar13 + lVar22 * 0xc" (identifier "lVar13") (+ "+") (binary_expression "lVar22 * 0xc" (identifier "lVar22") (* "*") (number_literal "0xc")))) (; ";")) (expression_statement "lVar18 = lVar24 + lVar22 * -8;" (assignment_expression "lVar18 = lVar24 + lVar22 * -8" (identifier "lVar18") (= "=") (binary_expression "lVar24 + lVar22 * -8" (identifier "lVar24") (+ "+") (binary_expression "lVar22 * -8" (identifier "lVar22") (* "*") (number_literal "-8")))) (; ";")) (expression_statement "lVar22 = lVar18 + lVar22 * 4;" (assignment_expression "lVar22 = lVar18 + lVar22 * 4" (identifier "lVar22") (= "=") (binary_expression "lVar18 + lVar22 * 4" (identifier "lVar18") (+ "+") (binary_expression "lVar22 * 4" (identifier "lVar22") (* "*") (number_literal "4")))) (; ";")) (if_statement "if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }\n            else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" (if "if") (parenthesized_expression "((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11))" (( "(") (binary_expression "(double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=\n                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" (cast_expression "(double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11)" (( "(") (binary_expression "(ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11" (call_expression "(ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)))" (( "(") (binary_expression "(double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" (cast_expression "(double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4))" (( "(") (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +\n                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4) +\n                                         fVar9 * *(float *)(lVar18 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar18 + lVar7 * 4)" (identifier "fVar12") (* "*") (pointer_expression "*(float *)(lVar18 + lVar7 * 4)" (* "*") (cast_expression "(float *)(lVar18 + lVar7 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + lVar7 * 4)" (( "(") (binary_expression "lVar18 + lVar7 * 4" (identifier "lVar18") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar9 * *(float *)(lVar18 + lVar5 * 4)" (identifier "fVar9") (* "*") (pointer_expression "*(float *)(lVar18 + lVar5 * 4)" (* "*") (cast_expression "(float *)(lVar18 + lVar5 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + lVar5 * 4)" (( "(") (binary_expression "lVar18 + lVar5 * 4" (identifier "lVar18") (+ "+") (binary_expression "lVar5 * 4" (identifier "lVar5") (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar2 * *(float *)(lVar18 + lVar6 * 4)" (identifier "fVar2") (* "*") (pointer_expression "*(float *)(lVar18 + lVar6 * 4)" (* "*") (cast_expression "(float *)(lVar18 + lVar6 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + lVar6 * 4)" (( "(") (binary_expression "lVar18 + lVar6 * 4" (identifier "lVar18") (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) () ")")))))) () ")"))) (- "-") (cast_expression "(double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))" (( "(") (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +\n                                        fVar2 * *(float *)(lVar22 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4) +\n                                        fVar9 * *(float *)(lVar22 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar22 + lVar7 * 4)" (identifier "fVar12") (* "*") (pointer_expression "*(float *)(lVar22 + lVar7 * 4)" (* "*") (cast_expression "(float *)(lVar22 + lVar7 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + lVar7 * 4)" (( "(") (binary_expression "lVar22 + lVar7 * 4" (identifier "lVar22") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar9 * *(float *)(lVar22 + lVar5 * 4)" (identifier "fVar9") (* "*") (pointer_expression "*(float *)(lVar22 + lVar5 * 4)" (* "*") (cast_expression "(float *)(lVar22 + lVar5 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + lVar5 * 4)" (( "(") (binary_expression "lVar22 + lVar5 * 4" (identifier "lVar22") (+ "+") (binary_expression "lVar5 * 4" (identifier "lVar5") (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar2 * *(float *)(lVar22 + lVar6 * 4)" (identifier "fVar2") (* "*") (pointer_expression "*(float *)(lVar22 + lVar6 * 4)" (* "*") (cast_expression "(float *)(lVar22 + lVar6 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + lVar6 * 4)" (( "(") (binary_expression "lVar22 + lVar6 * 4" (identifier "lVar22") (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) () ")")))))) () ")")))) () ")"))) (& "&") (identifier "uVar11")) () ")"))) (<= "<=") (cast_expression "(double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)" (( "(") (binary_expression "(ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11" (call_expression "(ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)))" (( "(") (binary_expression "(double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -\n                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" (cast_expression "(double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4))" (( "(") (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +\n                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)" (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4) +\n                                          fVar9 * *(float *)(lVar13 + lVar5 * 4)" (binary_expression "fVar2 * *(float *)(lVar13 + lVar6 * 4)" (identifier "fVar2") (* "*") (pointer_expression "*(float *)(lVar13 + lVar6 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar6 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar6 * 4)" (( "(") (binary_expression "lVar13 + lVar6 * 4" (identifier "lVar13") (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar9 * *(float *)(lVar13 + lVar5 * 4)" (identifier "fVar9") (* "*") (pointer_expression "*(float *)(lVar13 + lVar5 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar5 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar5 * 4)" (( "(") (binary_expression "lVar13 + lVar5 * 4" (identifier "lVar13") (+ "+") (binary_expression "lVar5 * 4" (identifier "lVar5") (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar12 * *(float *)(lVar13 + lVar7 * 4)" (identifier "fVar12") (* "*") (pointer_expression "*(float *)(lVar13 + lVar7 * 4)" (* "*") (cast_expression "(float *)(lVar13 + lVar7 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar7 * 4)" (( "(") (binary_expression "lVar13 + lVar7 * 4" (identifier "lVar13") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4"))) () ")")))))) () ")"))) (- "-") (cast_expression "(double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))" (( "(") (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +\n                                        fVar9 * *(float *)(lVar24 + lVar5 * 4)" (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4) +\n                                        fVar2 * *(float *)(lVar24 + lVar6 * 4)" (binary_expression "fVar12 * *(float *)(lVar24 + lVar7 * 4)" (identifier "fVar12") (* "*") (pointer_expression "*(float *)(lVar24 + lVar7 * 4)" (* "*") (cast_expression "(float *)(lVar24 + lVar7 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + lVar7 * 4)" (( "(") (binary_expression "lVar24 + lVar7 * 4" (identifier "lVar24") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar2 * *(float *)(lVar24 + lVar6 * 4)" (identifier "fVar2") (* "*") (pointer_expression "*(float *)(lVar24 + lVar6 * 4)" (* "*") (cast_expression "(float *)(lVar24 + lVar6 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + lVar6 * 4)" (( "(") (binary_expression "lVar24 + lVar6 * 4" (identifier "lVar24") (+ "+") (binary_expression "lVar6 * 4" (identifier "lVar6") (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar9 * *(float *)(lVar24 + lVar5 * 4)" (identifier "fVar9") (* "*") (pointer_expression "*(float *)(lVar24 + lVar5 * 4)" (* "*") (cast_expression "(float *)(lVar24 + lVar5 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + lVar5 * 4)" (( "(") (binary_expression "lVar24 + lVar5 * 4" (identifier "lVar24") (+ "+") (binary_expression "lVar5 * 4" (identifier "lVar5") (* "*") (number_literal "4"))) () ")")))))) () ")")))) () ")"))) (& "&") (identifier "uVar11")) () ")")))) () ")")) (compound_statement "{\n              dVar27 = DAT_003f9608 - dVar38;\n              if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }\n            }" ({ "{") (expression_statement "dVar27 = DAT_003f9608 - dVar38;" (assignment_expression "dVar27 = DAT_003f9608 - dVar38" (identifier "dVar27") (= "=") (binary_expression "DAT_003f9608 - dVar38" (identifier "DAT_003f9608") (- "-") (identifier "dVar38"))) (; ";")) (if_statement "if (dVar27 < dVar37) {\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }\n              else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" (if "if") (parenthesized_expression "(dVar27 < dVar37)" (( "(") (binary_expression "dVar27 < dVar37" (identifier "dVar27") (< "<") (identifier "dVar37")) () ")")) (compound_statement "{\n                dVar37 = DAT_003f9608 - dVar37;\n                dVar34 = (DAT_003f9608 - dVar37) - dVar27;\n                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }\n              }" ({ "{") (expression_statement "dVar37 = DAT_003f9608 - dVar37;" (assignment_expression "dVar37 = DAT_003f9608 - dVar37" (identifier "dVar37") (= "=") (binary_expression "DAT_003f9608 - dVar37" (identifier "DAT_003f9608") (- "-") (identifier "dVar37"))) (; ";")) (expression_statement "dVar34 = (DAT_003f9608 - dVar37) - dVar27;" (assignment_expression "dVar34 = (DAT_003f9608 - dVar37) - dVar27" (identifier "dVar34") (= "=") (binary_expression "(DAT_003f9608 - dVar37) - dVar27" (parenthesized_expression "(DAT_003f9608 - dVar37)" (( "(") (binary_expression "DAT_003f9608 - dVar37" (identifier "DAT_003f9608") (- "-") (identifier "dVar37")) () ")")) (- "-") (identifier "dVar27"))) (; ";")) (expression_statement "dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;" (assignment_expression "dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27" (identifier "dVar35") (= "=") (binary_expression "dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27" (binary_expression "dVar36 * dVar34 + dVar35 * dVar37" (binary_expression "dVar36 * dVar34" (identifier "dVar36") (* "*") (identifier "dVar34")) (+ "+") (binary_expression "dVar35 * dVar37" (identifier "dVar35") (* "*") (identifier "dVar37"))) (+ "+") (binary_expression "local_160 * dVar27" (identifier "local_160") (* "*") (identifier "dVar27")))) (; ";")) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" (identifier "dVar28") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }" (if "if") (parenthesized_expression "(0.0 <= dVar35)" (( "(") (binary_expression "0.0 <= dVar35" (number_literal "0.0") (<= "<=") (identifier "dVar35")) () ")")) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" ({ "{") (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" (identifier "dVar28") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" (if "if") (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" (( "(") (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" (identifier "dVar28") (* "*") (identifier "dVar35")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                  dVar35 = dVar28 / DAT_003f9600;\n                }" ({ "{") (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" (identifier "dVar35") (= "=") (binary_expression "dVar28 / DAT_003f9600" (identifier "dVar28") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" (else "else") (compound_statement "{\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" ({ "{") (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" (identifier "dVar35") (= "=") (binary_expression "DAT_003f9608 / dVar35" (identifier "DAT_003f9608") (/ "/") (identifier "dVar35"))) (; ";")) (} "}")))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (= "=") (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }" (if "if") (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" (( "(") (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" (* "*") (cast_expression "(int *)(lVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 4)" (( "(") (binary_expression "lVar17 + 4" (identifier "lVar17") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);\n                }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35)" (( "(") (binary_expression "(dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35" (parenthesized_expression "(dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37)" (( "(") (binary_expression "dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37" (binary_expression "dVar34 * dVar31 + dVar32 * dVar27" (binary_expression "dVar34 * dVar31" (identifier "dVar34") (* "*") (identifier "dVar31")) (+ "+") (binary_expression "dVar32 * dVar27" (identifier "dVar32") (* "*") (identifier "dVar27"))) (+ "+") (binary_expression "dVar33 * dVar37" (identifier "dVar33") (* "*") (identifier "dVar37"))) () ")")) (* "*") (identifier "dVar35")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" (else "else") (compound_statement "{\n                dVar31 = (DAT_003f9608 - dVar37) - dVar38;\n                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;\n                dVar28 = DAT_003f9c68;\n                if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }\n                if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }\n                lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n                if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }\n              }" ({ "{") (expression_statement "dVar31 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar31 = (DAT_003f9608 - dVar37) - dVar38" (identifier "dVar31") (= "=") (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" (( "(") (binary_expression "DAT_003f9608 - dVar37" (identifier "DAT_003f9608") (- "-") (identifier "dVar37")) () ")")) (- "-") (identifier "dVar38"))) (; ";")) (expression_statement "dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;" (assignment_expression "dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37" (identifier "dVar35") (= "=") (binary_expression "dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37" (binary_expression "dVar28 * dVar31 + dVar35 * dVar38" (binary_expression "dVar28 * dVar31" (identifier "dVar28") (* "*") (identifier "dVar31")) (+ "+") (binary_expression "dVar35 * dVar38" (identifier "dVar35") (* "*") (identifier "dVar38"))) (+ "+") (binary_expression "local_160 * dVar37" (identifier "local_160") (* "*") (identifier "dVar37")))) (; ";")) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" (identifier "dVar28") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar35) {\n                  dVar28 = DAT_003f9608;\n                }" (if "if") (parenthesized_expression "(0.0 <= dVar35)" (( "(") (binary_expression "0.0 <= dVar35" (number_literal "0.0") (<= "<=") (identifier "dVar35")) () ")")) (compound_statement "{\n                  dVar28 = DAT_003f9608;\n                }" ({ "{") (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" (identifier "dVar28") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                  dVar35 = dVar28 / DAT_003f9600;\n                }\n                else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" (if "if") (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" (( "(") (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" (identifier "dVar28") (* "*") (identifier "dVar35")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                  dVar35 = dVar28 / DAT_003f9600;\n                }" ({ "{") (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" (identifier "dVar35") (= "=") (binary_expression "dVar28 / DAT_003f9600" (identifier "dVar28") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" (else "else") (compound_statement "{\n                  dVar35 = DAT_003f9608 / dVar35;\n                }" ({ "{") (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" (identifier "dVar35") (= "=") (binary_expression "DAT_003f9608 / dVar35" (identifier "DAT_003f9608") (/ "/") (identifier "dVar35"))) (; ";")) (} "}")))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (= "=") (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }" (if "if") (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" (( "(") (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" (* "*") (cast_expression "(int *)(lVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 4)" (( "(") (binary_expression "lVar17 + 4" (identifier "lVar17") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));\n                }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32))" (( "(") (binary_expression "dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32)" (identifier "dVar35") (* "*") (parenthesized_expression "(dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32)" (( "(") (binary_expression "dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32" (binary_expression "dVar34 * dVar31 + dVar38 * dVar33" (binary_expression "dVar34 * dVar31" (identifier "dVar34") (* "*") (identifier "dVar31")) (+ "+") (binary_expression "dVar38 * dVar33" (identifier "dVar38") (* "*") (identifier "dVar33"))) (+ "+") (binary_expression "dVar37 * dVar32" (identifier "dVar37") (* "*") (identifier "dVar32"))) () ")"))) () ")")))) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" (else "else") (if_statement "if (dVar38 < dVar37) {\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }\n            else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" (if "if") (parenthesized_expression "(dVar38 < dVar37)" (( "(") (binary_expression "dVar38 < dVar37" (identifier "dVar38") (< "<") (identifier "dVar37")) () ")")) (compound_statement "{\n              dVar37 = DAT_003f9608 - dVar37;\n              dVar33 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }\n            }" ({ "{") (expression_statement "dVar37 = DAT_003f9608 - dVar37;" (assignment_expression "dVar37 = DAT_003f9608 - dVar37" (identifier "dVar37") (= "=") (binary_expression "DAT_003f9608 - dVar37" (identifier "DAT_003f9608") (- "-") (identifier "dVar37"))) (; ";")) (expression_statement "dVar33 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar33 = (DAT_003f9608 - dVar37) - dVar38" (identifier "dVar33") (= "=") (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" (( "(") (binary_expression "DAT_003f9608 - dVar37" (identifier "DAT_003f9608") (- "-") (identifier "dVar37")) () ")")) (- "-") (identifier "dVar38"))) (; ";")) (expression_statement "dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;" (assignment_expression "dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33" (identifier "dVar35") (= "=") (binary_expression "dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33" (binary_expression "dVar36 * dVar38 + dVar28 * dVar37" (binary_expression "dVar36 * dVar38" (identifier "dVar36") (* "*") (identifier "dVar38")) (+ "+") (binary_expression "dVar28 * dVar37" (identifier "dVar28") (* "*") (identifier "dVar37"))) (+ "+") (binary_expression "local_160 * dVar33" (identifier "local_160") (* "*") (identifier "dVar33")))) (; ";")) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" (identifier "dVar28") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }" (if "if") (parenthesized_expression "(0.0 <= dVar35)" (( "(") (binary_expression "0.0 <= dVar35" (number_literal "0.0") (<= "<=") (identifier "dVar35")) () ")")) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" ({ "{") (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" (identifier "dVar28") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" (if "if") (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" (( "(") (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" (identifier "dVar28") (* "*") (identifier "dVar35")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                dVar35 = dVar28 / DAT_003f9600;\n              }" ({ "{") (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" (identifier "dVar35") (= "=") (binary_expression "dVar28 / DAT_003f9600" (identifier "dVar28") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" (else "else") (compound_statement "{\n                dVar35 = DAT_003f9608 / dVar35;\n              }" ({ "{") (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" (identifier "dVar35") (= "=") (binary_expression "DAT_003f9608 / dVar35" (identifier "DAT_003f9608") (/ "/") (identifier "dVar35"))) (; ";")) (} "}")))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (= "=") (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }" (if "if") (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" (( "(") (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" (* "*") (cast_expression "(int *)(lVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 4)" (( "(") (binary_expression "lVar17 + 4" (identifier "lVar17") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);\n              }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35)" (( "(") (binary_expression "(dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35" (parenthesized_expression "(dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31)" (( "(") (binary_expression "dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31" (binary_expression "dVar33 * dVar32 + dVar37 * dVar34" (binary_expression "dVar33 * dVar32" (identifier "dVar33") (* "*") (identifier "dVar32")) (+ "+") (binary_expression "dVar37 * dVar34" (identifier "dVar37") (* "*") (identifier "dVar34"))) (+ "+") (binary_expression "dVar38 * dVar31" (identifier "dVar38") (* "*") (identifier "dVar31"))) () ")")) (* "*") (identifier "dVar35")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" (else "else") (compound_statement "{\n              dVar38 = DAT_003f9608 - dVar38;\n              dVar32 = (DAT_003f9608 - dVar37) - dVar38;\n              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;\n              dVar28 = DAT_003f9c68;\n              if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }\n              if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }\n              lVar17 = lVar17 + *(long *)(param_5 + 0x360);\n              if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }\n            }" ({ "{") (expression_statement "dVar38 = DAT_003f9608 - dVar38;" (assignment_expression "dVar38 = DAT_003f9608 - dVar38" (identifier "dVar38") (= "=") (binary_expression "DAT_003f9608 - dVar38" (identifier "DAT_003f9608") (- "-") (identifier "dVar38"))) (; ";")) (expression_statement "dVar32 = (DAT_003f9608 - dVar37) - dVar38;" (assignment_expression "dVar32 = (DAT_003f9608 - dVar37) - dVar38" (identifier "dVar32") (= "=") (binary_expression "(DAT_003f9608 - dVar37) - dVar38" (parenthesized_expression "(DAT_003f9608 - dVar37)" (( "(") (binary_expression "DAT_003f9608 - dVar37" (identifier "DAT_003f9608") (- "-") (identifier "dVar37")) () ")")) (- "-") (identifier "dVar38"))) (; ";")) (expression_statement "dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;" (assignment_expression "dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32" (identifier "dVar35") (= "=") (binary_expression "dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32" (binary_expression "dVar36 * dVar37 + dVar28 * dVar38" (binary_expression "dVar36 * dVar37" (identifier "dVar36") (* "*") (identifier "dVar37")) (+ "+") (binary_expression "dVar28 * dVar38" (identifier "dVar28") (* "*") (identifier "dVar38"))) (+ "+") (binary_expression "dVar35 * dVar32" (identifier "dVar35") (* "*") (identifier "dVar32")))) (; ";")) (expression_statement "dVar28 = DAT_003f9c68;" (assignment_expression "dVar28 = DAT_003f9c68" (identifier "dVar28") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar35) {\n                dVar28 = DAT_003f9608;\n              }" (if "if") (parenthesized_expression "(0.0 <= dVar35)" (( "(") (binary_expression "0.0 <= dVar35" (number_literal "0.0") (<= "<=") (identifier "dVar35")) () ")")) (compound_statement "{\n                dVar28 = DAT_003f9608;\n              }" ({ "{") (expression_statement "dVar28 = DAT_003f9608;" (assignment_expression "dVar28 = DAT_003f9608" (identifier "dVar28") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar28 * dVar35 < DAT_003f9600) {\n                dVar35 = dVar28 / DAT_003f9600;\n              }\n              else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" (if "if") (parenthesized_expression "(dVar28 * dVar35 < DAT_003f9600)" (( "(") (binary_expression "dVar28 * dVar35 < DAT_003f9600" (binary_expression "dVar28 * dVar35" (identifier "dVar28") (* "*") (identifier "dVar35")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                dVar35 = dVar28 / DAT_003f9600;\n              }" ({ "{") (expression_statement "dVar35 = dVar28 / DAT_003f9600;" (assignment_expression "dVar35 = dVar28 / DAT_003f9600" (identifier "dVar35") (= "=") (binary_expression "dVar28 / DAT_003f9600" (identifier "dVar28") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                dVar35 = DAT_003f9608 / dVar35;\n              }" (else "else") (compound_statement "{\n                dVar35 = DAT_003f9608 / dVar35;\n              }" ({ "{") (expression_statement "dVar35 = DAT_003f9608 / dVar35;" (assignment_expression "dVar35 = DAT_003f9608 / dVar35" (identifier "dVar35") (= "=") (binary_expression "DAT_003f9608 / dVar35" (identifier "DAT_003f9608") (/ "/") (identifier "dVar35"))) (; ";")) (} "}")))) (expression_statement "lVar17 = lVar17 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar17 = lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (= "=") (binary_expression "lVar17 + *(long *)(param_5 + 0x360)" (identifier "lVar17") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (if_statement "if (*(int *)(lVar17 + 4) != 0) {\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }" (if "if") (parenthesized_expression "(*(int *)(lVar17 + 4) != 0)" (( "(") (binary_expression "*(int *)(lVar17 + 4) != 0" (pointer_expression "*(int *)(lVar17 + 4)" (* "*") (cast_expression "(int *)(lVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 4)" (( "(") (binary_expression "lVar17 + 4" (identifier "lVar17") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));\n              }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));" (assignment_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =\n                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" (pointer_expression "*(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar17 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar17 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar17 + 8) * 4" (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31))" (( "(") (binary_expression "dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31)" (identifier "dVar35") (* "*") (parenthesized_expression "(dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31)" (( "(") (binary_expression "dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31" (binary_expression "dVar32 * dVar33 + dVar34 * dVar38" (binary_expression "dVar32 * dVar33" (identifier "dVar32") (* "*") (identifier "dVar33")) (+ "+") (binary_expression "dVar34 * dVar38" (identifier "dVar34") (* "*") (identifier "dVar38"))) (+ "+") (binary_expression "dVar37 * dVar31" (identifier "dVar37") (* "*") (identifier "dVar31"))) () ")"))) () ")")))) (; ";")) (} "}"))) (} "}")))))) (} "}"))) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" (identifier "lVar20") (= "=") (binary_expression "lVar20 + 1" (identifier "lVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar24 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar24 = *(long *)(param_3 + 0x340)" (identifier "lVar24") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar20 < lVar24)" (( "(") (binary_expression "lVar20 < lVar24" (identifier "lVar20") (< "<") (identifier "lVar24")) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 10:\n    if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }\n    dVar26 = floor(local_178 + DAT_003f9c28);\n    if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }\n    dVar28 = floor(local_170 + DAT_003f9c28);\n    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);\n    uVar14 = 0;\n    if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }\n    break;" (case "case") (number_literal "10") (: ":") (if_statement "if (param_1 < DAT_004294e8) {\n      local_178 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" (if "if") (parenthesized_expression "(param_1 < DAT_004294e8)" (( "(") (binary_expression "param_1 < DAT_004294e8" (identifier "param_1") (< "<") (identifier "DAT_004294e8")) () ")")) (compound_statement "{\n      local_178 = DAT_004294e8;\n    }" ({ "{") (expression_statement "local_178 = DAT_004294e8;" (assignment_expression "local_178 = DAT_004294e8" (identifier "local_178") (= "=") (identifier "DAT_004294e8")) (; ";")) (} "}")) (else_clause "else if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" (else "else") (if_statement "if (DAT_004294f0 < param_1) {\n      local_178 = DAT_004294f0;\n    }" (if "if") (parenthesized_expression "(DAT_004294f0 < param_1)" (( "(") (binary_expression "DAT_004294f0 < param_1" (identifier "DAT_004294f0") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n      local_178 = DAT_004294f0;\n    }" ({ "{") (expression_statement "local_178 = DAT_004294f0;" (assignment_expression "local_178 = DAT_004294f0" (identifier "local_178") (= "=") (identifier "DAT_004294f0")) (; ";")) (} "}"))))) (expression_statement "dVar26 = floor(local_178 + DAT_003f9c28);" (assignment_expression "dVar26 = floor(local_178 + DAT_003f9c28)" (identifier "dVar26") (= "=") (call_expression "floor(local_178 + DAT_003f9c28)" (identifier "floor") (argument_list "(local_178 + DAT_003f9c28)" (( "(") (binary_expression "local_178 + DAT_003f9c28" (identifier "local_178") (+ "+") (identifier "DAT_003f9c28")) () ")")))) (; ";")) (if_statement "if (param_2 < DAT_004294e8) {\n      local_170 = DAT_004294e8;\n    }\n    else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" (if "if") (parenthesized_expression "(param_2 < DAT_004294e8)" (( "(") (binary_expression "param_2 < DAT_004294e8" (identifier "param_2") (< "<") (identifier "DAT_004294e8")) () ")")) (compound_statement "{\n      local_170 = DAT_004294e8;\n    }" ({ "{") (expression_statement "local_170 = DAT_004294e8;" (assignment_expression "local_170 = DAT_004294e8" (identifier "local_170") (= "=") (identifier "DAT_004294e8")) (; ";")) (} "}")) (else_clause "else if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" (else "else") (if_statement "if (DAT_004294f0 < param_2) {\n      local_170 = DAT_004294f0;\n    }" (if "if") (parenthesized_expression "(DAT_004294f0 < param_2)" (( "(") (binary_expression "DAT_004294f0 < param_2" (identifier "DAT_004294f0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n      local_170 = DAT_004294f0;\n    }" ({ "{") (expression_statement "local_170 = DAT_004294f0;" (assignment_expression "local_170 = DAT_004294f0" (identifier "local_170") (= "=") (identifier "DAT_004294f0")) (; ";")) (} "}"))))) (expression_statement "dVar28 = floor(local_170 + DAT_003f9c28);" (assignment_expression "dVar28 = floor(local_170 + DAT_003f9c28)" (identifier "dVar28") (= "=") (call_expression "floor(local_170 + DAT_003f9c28)" (identifier "floor") (argument_list "(local_170 + DAT_003f9c28)" (( "(") (binary_expression "local_170 + DAT_003f9c28" (identifier "local_170") (+ "+") (identifier "DAT_003f9c28")) () ")")))) (; ";")) (expression_statement "lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);" (assignment_expression "lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" (identifier "lVar25") (= "=") (call_expression "GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,(long)dVar26,(long)dVar28,1,1,param_8)" (( "(") (identifier "param_4") (, ",") (cast_expression "(long)dVar26" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "dVar26")) (, ",") (cast_expression "(long)dVar28" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "dVar28")) (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (identifier "param_8") () ")")))) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar25 != 0) {\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(lVar25 != 0)" (( "(") (binary_expression "lVar25 != 0" (identifier "lVar25") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }\n    }" ({ "{") (if_statement "if (*(long *)(param_3 + 0x340) < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_3 + 0x340) < 1)" (( "(") (binary_expression "*(long *)(param_3 + 0x340) < 1" (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")")))) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        lVar13 = 0;\n        do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "lVar13 = 0;" (assignment_expression "lVar13 = 0" (identifier "lVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        } while (lVar13 < *(long *)(param_3 + 0x340));" (do "do") (compound_statement "{\n          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;\n          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }\n          lVar13 = lVar13 + 1;\n        }" ({ "{") (expression_statement "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;" (assignment_expression "lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (identifier "lVar24") (= "=") (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 0x360) + lVar13 * 0x10)" (( "(") (binary_expression "*(long *)(param_3 + 0x360) + lVar13 * 0x10" (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (binary_expression "lVar13 * 0x10" (identifier "lVar13") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x10"))) (; ";")) (if_statement "if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" (if "if") (parenthesized_expression "(((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0))" (( "(") (binary_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&\n             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0))" (( "(") (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&\n              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" (* "*") (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar24)" (( "(") (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0" (pointer_expression "*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" (* "*") (cast_expression "(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 0x360) + 4 + lVar24)" (( "(") (binary_expression "*(long *)(param_3 + 0x360) + 4 + lVar24" (binary_expression "*(long *)(param_3 + 0x360) + 4" (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar24")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)" (( "(") (comma_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0" (assignment_expression "lVar24 = lVar24 + *(long *)(param_5 + 0x360)" (identifier "lVar24") (= "=") (binary_expression "lVar24 + *(long *)(param_5 + 0x360)" (identifier "lVar24") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (, ",") (binary_expression "*(int *)(lVar24 + 4) != 0" (pointer_expression "*(int *)(lVar24 + 4)" (* "*") (cast_expression "(int *)(lVar24 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + 4)" (( "(") (binary_expression "lVar24 + 4" (identifier "lVar24") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4);" (assignment_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =\n                 *(undefined4 *)(lVar25 + lVar13 * 4)" (pointer_expression "*(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" (* "*") (cast_expression "(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar24 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar24 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar24 + 8) * 4" (pointer_expression "*(long *)(lVar24 + 8)" (* "*") (cast_expression "(long *)(lVar24 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar24 + 8)" (( "(") (binary_expression "lVar24 + 8" (identifier "lVar24") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar25 + lVar13 * 4)" (* "*") (cast_expression "(undefined4 *)(lVar25 + lVar13 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + lVar13 * 4)" (( "(") (binary_expression "lVar25 + lVar13 * 4" (identifier "lVar25") (+ "+") (binary_expression "lVar13 * 4" (identifier "lVar13") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 1" (identifier "lVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar13 < *(long *)(param_3 + 0x340))" (( "(") (binary_expression "lVar13 < *(long *)(param_3 + 0x340)" (identifier "lVar13") (< "<") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xb:\n    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);\n    dVar28 = DAT_0041d760;\n    fVar9 = _DAT_003fa400;\n    dVar26 = DAT_003f9608;\n    uVar14 = 0;\n    if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" (case "case") (number_literal "0xb") (: ":") (expression_statement "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);" (assignment_expression "pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (identifier "pfVar15") (= "=") (cast_expression "(float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(param_4,lVar25 + -1,local_168 + -1,4,4,param_8)" (( "(") (identifier "param_4") (, ",") (binary_expression "lVar25 + -1" (identifier "lVar25") (+ "+") (number_literal "-1")) (, ",") (binary_expression "local_168 + -1" (identifier "local_168") (+ "+") (number_literal "-1")) (, ",") (number_literal "4") (, ",") (number_literal "4") (, ",") (identifier "param_8") () ")"))))) (; ";")) (expression_statement "dVar28 = DAT_0041d760;" (assignment_expression "dVar28 = DAT_0041d760" (identifier "dVar28") (= "=") (identifier "DAT_0041d760")) (; ";")) (expression_statement "fVar9 = _DAT_003fa400;" (assignment_expression "fVar9 = _DAT_003fa400" (identifier "fVar9") (= "=") (identifier "_DAT_003fa400")) (; ";")) (expression_statement "dVar26 = DAT_003f9608;" (assignment_expression "dVar26 = DAT_003f9608" (identifier "dVar26") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pfVar15 != (float *)0x0) {\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" (if "if") (parenthesized_expression "(pfVar15 != (float *)0x0)" (( "(") (binary_expression "pfVar15 != (float *)0x0" (identifier "pfVar15") (!= "!=") (cast_expression "(float *)0x0" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      lVar13 = *(long *)(param_3 + 0x340);\n      if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }\n    }" ({ "{") (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (if_statement "if (lVar13 < 1) {\n        uVar14 = 1;\n      }\n      else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" (if "if") (parenthesized_expression "(lVar13 < 1)" (( "(") (binary_expression "lVar13 < 1" (identifier "lVar13") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" (else "else") (compound_statement "{\n        lVar24 = 0;\n        pfVar21 = pfVar15;\n        do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);\n        uVar14 = 1;\n      }" ({ "{") (expression_statement "lVar24 = 0;" (assignment_expression "lVar24 = 0" (identifier "lVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "pfVar21 = pfVar15;" (assignment_expression "pfVar21 = pfVar15" (identifier "pfVar21") (= "=") (identifier "pfVar15")) (; ";")) (do_statement "do {\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        } while (lVar24 < lVar13);" (do "do") (compound_statement "{\n          lVar20 = *(long *)(param_3 + 0x360);\n          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;\n          uVar23 = *(uint *)(lVar20 + 4 + lVar18);\n          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }\n          lVar24 = lVar24 + 1;\n          lVar13 = *(long *)(param_3 + 0x340);\n          pfVar21 = pfVar21 + 1;\n        }" ({ "{") (expression_statement "lVar20 = *(long *)(param_3 + 0x360);" (assignment_expression "lVar20 = *(long *)(param_3 + 0x360)" (identifier "lVar20") (= "=") (pointer_expression "*(long *)(param_3 + 0x360)" (* "*") (cast_expression "(long *)(param_3 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x360)" (( "(") (binary_expression "param_3 + 0x360" (identifier "param_3") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;" (assignment_expression "lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (identifier "lVar18") (= "=") (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10" (binary_expression "(ulong)*(uint *)(lVar20 + lVar24 * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar20 + lVar24 * 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + lVar24 * 0x10)" (( "(") (binary_expression "lVar20 + lVar24 * 0x10" (identifier "lVar20") (+ "+") (binary_expression "lVar24 * 0x10" (identifier "lVar24") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "uVar23 = *(uint *)(lVar20 + 4 + lVar18);" (assignment_expression "uVar23 = *(uint *)(lVar20 + 4 + lVar18)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(lVar20 + 4 + lVar18)" (* "*") (cast_expression "(uint *)(lVar20 + 4 + lVar18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 4 + lVar18)" (( "(") (binary_expression "lVar20 + 4 + lVar18" (binary_expression "lVar20 + 4" (identifier "lVar20") (+ "+") (number_literal "4")) (+ "+") (identifier "lVar18")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }" (if "if") (parenthesized_expression "((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0))" (( "(") (binary_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)" (parenthesized_expression "(*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0" (pointer_expression "*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" (* "*") (cast_expression "(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_5 + 0x360) + 4 + lVar18)" (( "(") (binary_expression "*(long *)(param_5 + 0x360) + 4 + lVar18" (binary_expression "*(long *)(param_5 + 0x360) + 4" (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (identifier "lVar18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            uVar23 = uVar23 & 4;\n            if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }\n            dVar32 = param_1 - (double)lVar25;\n            dVar31 = dVar26 - dVar32;\n            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;\n            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);\n            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);\n            dVar32 = param_2 - (double)local_168;\n            dVar37 = dVar26 - dVar32;\n            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;\n            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;\n            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);\n            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);\n            dVar32 = DAT_003f9608;\n            if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }\n            lVar18 = lVar18 + *(long *)(param_5 + 0x360);\n            if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }\n          }" ({ "{") (expression_statement "uVar23 = uVar23 & 4;" (assignment_expression "uVar23 = uVar23 & 4" (identifier "uVar23") (= "=") (binary_expression "uVar23 & 4" (identifier "uVar23") (& "&") (number_literal "4"))) (; ";")) (if_statement "if (uVar23 == 0) {\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }\n            else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" (if "if") (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              lVar20 = 0;\n              pfVar19 = pfVar21;\n              do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);\n            }" ({ "{") (expression_statement "lVar20 = 0;" (assignment_expression "lVar20 = 0" (identifier "lVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "pfVar19 = pfVar21;" (assignment_expression "pfVar19 = pfVar21" (identifier "pfVar19") (= "=") (identifier "pfVar21")) (; ";")) (do_statement "do {\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              } while (lVar20 != 0x10);" (do "do") (compound_statement "{\n                local_148[lVar20] = DAT_003f9608;\n                local_c8[lVar20] = (double)*pfVar19;\n                lVar20 = lVar20 + 1;\n                pfVar19 = pfVar19 + lVar13;\n              }" ({ "{") (expression_statement "local_148[lVar20] = DAT_003f9608;" (assignment_expression "local_148[lVar20] = DAT_003f9608" (subscript_expression "local_148[lVar20]" (identifier "local_148") ([ "[") (identifier "lVar20") (] "]")) (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "local_c8[lVar20] = (double)*pfVar19;" (assignment_expression "local_c8[lVar20] = (double)*pfVar19" (subscript_expression "local_c8[lVar20]" (identifier "local_c8") ([ "[") (identifier "lVar20") (] "]")) (= "=") (cast_expression "(double)*pfVar19" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*pfVar19" (* "*") (identifier "pfVar19")))) (; ";")) (expression_statement "lVar20 = lVar20 + 1;" (assignment_expression "lVar20 = lVar20 + 1" (identifier "lVar20") (= "=") (binary_expression "lVar20 + 1" (identifier "lVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pfVar19 = pfVar19 + lVar13;" (assignment_expression "pfVar19 = pfVar19 + lVar13" (identifier "pfVar19") (= "=") (binary_expression "pfVar19 + lVar13" (identifier "pfVar19") (+ "+") (identifier "lVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar20 != 0x10)" (( "(") (binary_expression "lVar20 != 0x10" (identifier "lVar20") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (} "}")) (else_clause "else {\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" (else "else") (compound_statement "{\n              iVar3 = *(int *)(lVar20 + 0x44);\n              lVar22 = 0;\n              lVar17 = 0;\n              do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);\n            }" ({ "{") (expression_statement "iVar3 = *(int *)(lVar20 + 0x44);" (assignment_expression "iVar3 = *(int *)(lVar20 + 0x44)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar20 + 0x44)" (* "*") (cast_expression "(int *)(lVar20 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 0x44)" (( "(") (binary_expression "lVar20 + 0x44" (identifier "lVar20") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "lVar22 = 0;" (assignment_expression "lVar22 = 0" (identifier "lVar22") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" (identifier "lVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              } while (lVar17 != 0x10);" (do "do") (compound_statement "{\n                fVar2 = fVar9;\n                if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }\n                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;\n                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];\n                lVar17 = lVar17 + 1;\n                lVar22 = lVar22 + lVar13;\n              }" ({ "{") (expression_statement "fVar2 = fVar9;" (assignment_expression "fVar2 = fVar9" (identifier "fVar2") (= "=") (identifier "fVar9")) (; ";")) (if_statement "if (iVar3 != 0) {\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];\n                }" ({ "{") (expression_statement "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];" (assignment_expression "fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" (identifier "fVar2") (= "=") (subscript_expression "pfVar15[lVar22 + *(long *)(lVar20 + 0x48)]" (identifier "pfVar15") ([ "[") (binary_expression "lVar22 + *(long *)(lVar20 + 0x48)" (identifier "lVar22") (+ "+") (pointer_expression "*(long *)(lVar20 + 0x48)" (* "*") (cast_expression "(long *)(lVar20 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 0x48)" (( "(") (binary_expression "lVar20 + 0x48" (identifier "lVar20") (+ "+") (number_literal "0x48")) () ")"))))) (] "]"))) (; ";")) (} "}"))) (expression_statement "local_148[lVar17] = (double)fVar2 * DAT_003f9c60;" (assignment_expression "local_148[lVar17] = (double)fVar2 * DAT_003f9c60" (subscript_expression "local_148[lVar17]" (identifier "local_148") ([ "[") (identifier "lVar17") (] "]")) (= "=") (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar2")) (* "*") (identifier "DAT_003f9c60"))) (; ";")) (expression_statement "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];" (assignment_expression "local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (subscript_expression "local_c8[lVar17]" (identifier "local_c8") ([ "[") (identifier "lVar17") (] "]")) (= "=") (binary_expression "(double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22]" (binary_expression "(double)fVar2 * DAT_003f9c60" (cast_expression "(double)fVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar2")) (* "*") (identifier "DAT_003f9c60")) (* "*") (cast_expression "(double)pfVar21[lVar22]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "pfVar21[lVar22]" (identifier "pfVar21") ([ "[") (identifier "lVar22") (] "]"))))) (; ";")) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar22 = lVar22 + lVar13;" (assignment_expression "lVar22 = lVar22 + lVar13" (identifier "lVar22") (= "=") (binary_expression "lVar22 + lVar13" (identifier "lVar22") (+ "+") (identifier "lVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar17 != 0x10)" (( "(") (binary_expression "lVar17 != 0x10" (identifier "lVar17") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (} "}")))) (expression_statement "dVar32 = param_1 - (double)lVar25;" (assignment_expression "dVar32 = param_1 - (double)lVar25" (identifier "dVar32") (= "=") (binary_expression "param_1 - (double)lVar25" (identifier "param_1") (- "-") (cast_expression "(double)lVar25" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar25")))) (; ";")) (expression_statement "dVar31 = dVar26 - dVar32;" (assignment_expression "dVar31 = dVar26 - dVar32" (identifier "dVar31") (= "=") (binary_expression "dVar26 - dVar32" (identifier "dVar26") (- "-") (identifier "dVar32"))) (; ";")) (expression_statement "dVar33 = dVar32 * dVar28 * dVar32 * dVar32;" (assignment_expression "dVar33 = dVar32 * dVar28 * dVar32 * dVar32" (identifier "dVar33") (= "=") (binary_expression "dVar32 * dVar28 * dVar32 * dVar32" (binary_expression "dVar32 * dVar28 * dVar32" (binary_expression "dVar32 * dVar28" (identifier "dVar32") (* "*") (identifier "dVar28")) (* "*") (identifier "dVar32")) (* "*") (identifier "dVar32"))) (; ";")) (expression_statement "dVar34 = dVar31 * dVar28 * dVar31 * dVar31;" (assignment_expression "dVar34 = dVar31 * dVar28 * dVar31 * dVar31" (identifier "dVar34") (= "=") (binary_expression "dVar31 * dVar28 * dVar31 * dVar31" (binary_expression "dVar31 * dVar28 * dVar31" (binary_expression "dVar31 * dVar28" (identifier "dVar31") (* "*") (identifier "dVar28")) (* "*") (identifier "dVar31")) (* "*") (identifier "dVar31"))) (; ";")) (expression_statement "dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);" (assignment_expression "dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34)" (identifier "dVar35") (= "=") (binary_expression "(dVar31 - dVar34) + (dVar33 - dVar34)" (parenthesized_expression "(dVar31 - dVar34)" (( "(") (binary_expression "dVar31 - dVar34" (identifier "dVar31") (- "-") (identifier "dVar34")) () ")")) (+ "+") (parenthesized_expression "(dVar33 - dVar34)" (( "(") (binary_expression "dVar33 - dVar34" (identifier "dVar33") (- "-") (identifier "dVar34")) () ")")))) (; ";")) (expression_statement "dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);" (assignment_expression "dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34)" (identifier "dVar36") (= "=") (binary_expression "(dVar32 - dVar33) - (dVar33 - dVar34)" (parenthesized_expression "(dVar32 - dVar33)" (( "(") (binary_expression "dVar32 - dVar33" (identifier "dVar32") (- "-") (identifier "dVar33")) () ")")) (- "-") (parenthesized_expression "(dVar33 - dVar34)" (( "(") (binary_expression "dVar33 - dVar34" (identifier "dVar33") (- "-") (identifier "dVar34")) () ")")))) (; ";")) (expression_statement "dVar32 = param_2 - (double)local_168;" (assignment_expression "dVar32 = param_2 - (double)local_168" (identifier "dVar32") (= "=") (binary_expression "param_2 - (double)local_168" (identifier "param_2") (- "-") (cast_expression "(double)local_168" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "local_168")))) (; ";")) (expression_statement "dVar37 = dVar26 - dVar32;" (assignment_expression "dVar37 = dVar26 - dVar32" (identifier "dVar37") (= "=") (binary_expression "dVar26 - dVar32" (identifier "dVar26") (- "-") (identifier "dVar32"))) (; ";")) (expression_statement "dVar38 = dVar32 * dVar28 * dVar32 * dVar32;" (assignment_expression "dVar38 = dVar32 * dVar28 * dVar32 * dVar32" (identifier "dVar38") (= "=") (binary_expression "dVar32 * dVar28 * dVar32 * dVar32" (binary_expression "dVar32 * dVar28 * dVar32" (binary_expression "dVar32 * dVar28" (identifier "dVar32") (* "*") (identifier "dVar28")) (* "*") (identifier "dVar32")) (* "*") (identifier "dVar32"))) (; ";")) (expression_statement "dVar31 = dVar37 * dVar28 * dVar37 * dVar37;" (assignment_expression "dVar31 = dVar37 * dVar28 * dVar37 * dVar37" (identifier "dVar31") (= "=") (binary_expression "dVar37 * dVar28 * dVar37 * dVar37" (binary_expression "dVar37 * dVar28 * dVar37" (binary_expression "dVar37 * dVar28" (identifier "dVar37") (* "*") (identifier "dVar28")) (* "*") (identifier "dVar37")) (* "*") (identifier "dVar37"))) (; ";")) (expression_statement "dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);" (assignment_expression "dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31)" (identifier "dVar27") (= "=") (binary_expression "(dVar37 - dVar31) + (dVar38 - dVar31)" (parenthesized_expression "(dVar37 - dVar31)" (( "(") (binary_expression "dVar37 - dVar31" (identifier "dVar37") (- "-") (identifier "dVar31")) () ")")) (+ "+") (parenthesized_expression "(dVar38 - dVar31)" (( "(") (binary_expression "dVar38 - dVar31" (identifier "dVar38") (- "-") (identifier "dVar31")) () ")")))) (; ";")) (expression_statement "dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);" (assignment_expression "dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31)" (identifier "dVar37") (= "=") (binary_expression "(dVar32 - dVar38) - (dVar38 - dVar31)" (parenthesized_expression "(dVar32 - dVar38)" (( "(") (binary_expression "dVar32 - dVar38" (identifier "dVar32") (- "-") (identifier "dVar38")) () ")")) (- "-") (parenthesized_expression "(dVar38 - dVar31)" (( "(") (binary_expression "dVar38 - dVar31" (identifier "dVar38") (- "-") (identifier "dVar31")) () ")")))) (; ";")) (expression_statement "dVar32 = DAT_003f9608;" (assignment_expression "dVar32 = DAT_003f9608" (identifier "dVar32") (= "=") (identifier "DAT_003f9608")) (; ";")) (if_statement "if (uVar23 == 0) {\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }" (if "if") (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;\n              dVar30 = DAT_003f9c68;\n              if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }\n              if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }\n            }" ({ "{") (expression_statement "dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38;" (assignment_expression "dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" (identifier "dVar32") (= "=") (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37 +\n                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31 + (dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27 +\n                       (dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31" (binary_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]) * dVar27" (parenthesized_expression "(dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7])" (( "(") (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +\n                       dVar33 * local_148[7]" (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5]" (binary_expression "dVar36 * local_148[6] + dVar34 * local_148[4]" (binary_expression "dVar36 * local_148[6]" (identifier "dVar36") (* "*") (subscript_expression "local_148[6]" (identifier "local_148") ([ "[") (number_literal "6") (] "]"))) (+ "+") (binary_expression "dVar34 * local_148[4]" (identifier "dVar34") (* "*") (subscript_expression "local_148[4]" (identifier "local_148") ([ "[") (number_literal "4") (] "]")))) (+ "+") (binary_expression "dVar35 * local_148[5]" (identifier "dVar35") (* "*") (subscript_expression "local_148[5]" (identifier "local_148") ([ "[") (number_literal "5") (] "]")))) (+ "+") (binary_expression "dVar33 * local_148[7]" (identifier "dVar33") (* "*") (subscript_expression "local_148[7]" (identifier "local_148") ([ "[") (number_literal "7") (] "]")))) () ")")) (* "*") (identifier "dVar27")) (+ "+") (binary_expression "(dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *\n                       dVar31" (parenthesized_expression "(dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2])" (( "(") (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]" (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0] + dVar35 * local_148[1]" (binary_expression "dVar33 * local_148[3] +\n                       dVar34 * local_148[0]" (binary_expression "dVar33 * local_148[3]" (identifier "dVar33") (* "*") (subscript_expression "local_148[3]" (identifier "local_148") ([ "[") (number_literal "3") (] "]"))) (+ "+") (binary_expression "dVar34 * local_148[0]" (identifier "dVar34") (* "*") (subscript_expression "local_148[0]" (identifier "local_148") ([ "[") (number_literal "0") (] "]")))) (+ "+") (binary_expression "dVar35 * local_148[1]" (identifier "dVar35") (* "*") (subscript_expression "local_148[1]" (identifier "local_148") ([ "[") (number_literal "1") (] "]")))) (+ "+") (binary_expression "dVar36 * local_148[2]" (identifier "dVar36") (* "*") (subscript_expression "local_148[2]" (identifier "local_148") ([ "[") (number_literal "2") (] "]")))) () ")")) (* "*") (identifier "dVar31"))) (+ "+") (binary_expression "(dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]) * dVar37" (parenthesized_expression "(dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb])" (( "(") (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9] +\n                                dVar33 * local_148[0xb]" (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8] + dVar35 * local_148[9]" (binary_expression "dVar36 * local_148[10] +\n                                 dVar34 * local_148[8]" (binary_expression "dVar36 * local_148[10]" (identifier "dVar36") (* "*") (subscript_expression "local_148[10]" (identifier "local_148") ([ "[") (number_literal "10") (] "]"))) (+ "+") (binary_expression "dVar34 * local_148[8]" (identifier "dVar34") (* "*") (subscript_expression "local_148[8]" (identifier "local_148") ([ "[") (number_literal "8") (] "]")))) (+ "+") (binary_expression "dVar35 * local_148[9]" (identifier "dVar35") (* "*") (subscript_expression "local_148[9]" (identifier "local_148") ([ "[") (number_literal "9") (] "]")))) (+ "+") (binary_expression "dVar33 * local_148[0xb]" (identifier "dVar33") (* "*") (subscript_expression "local_148[0xb]" (identifier "local_148") ([ "[") (number_literal "0xb") (] "]")))) () ")")) (* "*") (identifier "dVar37"))) (+ "+") (binary_expression "(dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]) * dVar38" (parenthesized_expression "(dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf])" (( "(") (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]\n                       + dVar33 * local_148[0xf]" (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]" (binary_expression "dVar36 * local_148[0xe] + dVar34 * local_148[0xc]" (binary_expression "dVar36 * local_148[0xe]" (identifier "dVar36") (* "*") (subscript_expression "local_148[0xe]" (identifier "local_148") ([ "[") (number_literal "0xe") (] "]"))) (+ "+") (binary_expression "dVar34 * local_148[0xc]" (identifier "dVar34") (* "*") (subscript_expression "local_148[0xc]" (identifier "local_148") ([ "[") (number_literal "0xc") (] "]")))) (+ "+") (binary_expression "dVar35 * local_148[0xd]" (identifier "dVar35") (* "*") (subscript_expression "local_148[0xd]" (identifier "local_148") ([ "[") (number_literal "0xd") (] "]")))) (+ "+") (binary_expression "dVar33 * local_148[0xf]" (identifier "dVar33") (* "*") (subscript_expression "local_148[0xf]" (identifier "local_148") ([ "[") (number_literal "0xf") (] "]")))) () ")")) (* "*") (identifier "dVar38")))) (; ";")) (expression_statement "dVar30 = DAT_003f9c68;" (assignment_expression "dVar30 = DAT_003f9c68" (identifier "dVar30") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar32) {\n                dVar30 = DAT_003f9608;\n              }" (if "if") (parenthesized_expression "(0.0 <= dVar32)" (( "(") (binary_expression "0.0 <= dVar32" (number_literal "0.0") (<= "<=") (identifier "dVar32")) () ")")) (compound_statement "{\n                dVar30 = DAT_003f9608;\n              }" ({ "{") (expression_statement "dVar30 = DAT_003f9608;" (assignment_expression "dVar30 = DAT_003f9608" (identifier "dVar30") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar32 * dVar30 < DAT_003f9600) {\n                dVar32 = dVar30 / DAT_003f9600;\n              }\n              else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }" (if "if") (parenthesized_expression "(dVar32 * dVar30 < DAT_003f9600)" (( "(") (binary_expression "dVar32 * dVar30 < DAT_003f9600" (binary_expression "dVar32 * dVar30" (identifier "dVar32") (* "*") (identifier "dVar30")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n                dVar32 = dVar30 / DAT_003f9600;\n              }" ({ "{") (expression_statement "dVar32 = dVar30 / DAT_003f9600;" (assignment_expression "dVar32 = dVar30 / DAT_003f9600" (identifier "dVar32") (= "=") (binary_expression "dVar30 / DAT_003f9600" (identifier "dVar30") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n                dVar32 = DAT_003f9608 / dVar32;\n              }" (else "else") (compound_statement "{\n                dVar32 = DAT_003f9608 / dVar32;\n              }" ({ "{") (expression_statement "dVar32 = DAT_003f9608 / dVar32;" (assignment_expression "dVar32 = DAT_003f9608 / dVar32" (identifier "dVar32") (= "=") (binary_expression "DAT_003f9608 / dVar32" (identifier "DAT_003f9608") (/ "/") (identifier "dVar32"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "lVar18 = lVar18 + *(long *)(param_5 + 0x360);" (assignment_expression "lVar18 = lVar18 + *(long *)(param_5 + 0x360)" (identifier "lVar18") (= "=") (binary_expression "lVar18 + *(long *)(param_5 + 0x360)" (identifier "lVar18") (+ "+") (pointer_expression "*(long *)(param_5 + 0x360)" (* "*") (cast_expression "(long *)(param_5 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x360)" (( "(") (binary_expression "param_5 + 0x360" (identifier "param_5") (+ "+") (number_literal "0x360")) () ")")))))) (; ";")) (if_statement "if (*(int *)(lVar18 + 4) != 0) {\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }" (if "if") (parenthesized_expression "(*(int *)(lVar18 + 4) != 0)" (( "(") (binary_expression "*(int *)(lVar18 + 4) != 0" (pointer_expression "*(int *)(lVar18 + 4)" (* "*") (cast_expression "(int *)(lVar18 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 4)" (( "(") (binary_expression "lVar18 + 4" (identifier "lVar18") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);\n            }" ({ "{") (expression_statement "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);" (assignment_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =\n                   (float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" (pointer_expression "*(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" (* "*") (cast_expression "(float *)(param_7 + *(long *)(lVar18 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + *(long *)(lVar18 + 8) * 4)" (( "(") (binary_expression "param_7 + *(long *)(lVar18 + 8) * 4" (identifier "param_7") (+ "+") (binary_expression "*(long *)(lVar18 + 8) * 4" (pointer_expression "*(long *)(lVar18 + 8)" (* "*") (cast_expression "(long *)(lVar18 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar18 + 8)" (( "(") (binary_expression "lVar18 + 8" (identifier "lVar18") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32)" (( "(") (binary_expression "(dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32" (parenthesized_expression "(dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38)" (( "(") (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +\n                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]) +\n                            dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]) +\n                            dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" (binary_expression "dVar27 * (dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7])" (identifier "dVar27") (* "*") (parenthesized_expression "(dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7])" (( "(") (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +\n                                     dVar33 * local_c8[7]" (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4] + dVar35 * local_c8[5]" (binary_expression "dVar36 * local_c8[6] +\n                                      dVar34 * local_c8[4]" (binary_expression "dVar36 * local_c8[6]" (identifier "dVar36") (* "*") (subscript_expression "local_c8[6]" (identifier "local_c8") ([ "[") (number_literal "6") (] "]"))) (+ "+") (binary_expression "dVar34 * local_c8[4]" (identifier "dVar34") (* "*") (subscript_expression "local_c8[4]" (identifier "local_c8") ([ "[") (number_literal "4") (] "]")))) (+ "+") (binary_expression "dVar35 * local_c8[5]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[5]" (identifier "local_c8") ([ "[") (number_literal "5") (] "]")))) (+ "+") (binary_expression "dVar33 * local_c8[7]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[7]" (identifier "local_c8") ([ "[") (number_literal "7") (] "]")))) () ")"))) (+ "+") (binary_expression "dVar31 * (dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" (identifier "dVar31") (* "*") (parenthesized_expression "(dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3])" (( "(") (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +\n                                     dVar33 * local_c8[3]" (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0] + dVar35 * local_c8[1]" (binary_expression "dVar36 * local_c8[2] +\n                                      dVar34 * local_c8[0]" (binary_expression "dVar36 * local_c8[2]" (identifier "dVar36") (* "*") (subscript_expression "local_c8[2]" (identifier "local_c8") ([ "[") (number_literal "2") (] "]"))) (+ "+") (binary_expression "dVar34 * local_c8[0]" (identifier "dVar34") (* "*") (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")))) (+ "+") (binary_expression "dVar35 * local_c8[1]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[1]" (identifier "local_c8") ([ "[") (number_literal "1") (] "]")))) (+ "+") (binary_expression "dVar33 * local_c8[3]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[3]" (identifier "local_c8") ([ "[") (number_literal "3") (] "]")))) () ")")))) (+ "+") (binary_expression "dVar37 * (dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" (identifier "dVar37") (* "*") (parenthesized_expression "(dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9])" (( "(") (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]" (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10] +\n                                     dVar34 * local_c8[8]" (binary_expression "dVar33 * local_c8[0xb] +\n                                     dVar36 * local_c8[10]" (binary_expression "dVar33 * local_c8[0xb]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[0xb]" (identifier "local_c8") ([ "[") (number_literal "0xb") (] "]"))) (+ "+") (binary_expression "dVar36 * local_c8[10]" (identifier "dVar36") (* "*") (subscript_expression "local_c8[10]" (identifier "local_c8") ([ "[") (number_literal "10") (] "]")))) (+ "+") (binary_expression "dVar34 * local_c8[8]" (identifier "dVar34") (* "*") (subscript_expression "local_c8[8]" (identifier "local_c8") ([ "[") (number_literal "8") (] "]")))) (+ "+") (binary_expression "dVar35 * local_c8[9]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[9]" (identifier "local_c8") ([ "[") (number_literal "9") (] "]")))) () ")")))) (+ "+") (binary_expression "(dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]) * dVar38" (parenthesized_expression "(dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf])" (( "(") (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]\n                           + dVar33 * local_c8[0xf]" (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]" (binary_expression "dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc]" (binary_expression "dVar36 * local_c8[0xe]" (identifier "dVar36") (* "*") (subscript_expression "local_c8[0xe]" (identifier "local_c8") ([ "[") (number_literal "0xe") (] "]"))) (+ "+") (binary_expression "dVar34 * local_c8[0xc]" (identifier "dVar34") (* "*") (subscript_expression "local_c8[0xc]" (identifier "local_c8") ([ "[") (number_literal "0xc") (] "]")))) (+ "+") (binary_expression "dVar35 * local_c8[0xd]" (identifier "dVar35") (* "*") (subscript_expression "local_c8[0xd]" (identifier "local_c8") ([ "[") (number_literal "0xd") (] "]")))) (+ "+") (binary_expression "dVar33 * local_c8[0xf]" (identifier "dVar33") (* "*") (subscript_expression "local_c8[0xf]" (identifier "local_c8") ([ "[") (number_literal "0xf") (] "]")))) () ")")) (* "*") (identifier "dVar38"))) () ")")) (* "*") (identifier "dVar32")) () ")")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar24 = lVar24 + 1;" (assignment_expression "lVar24 = lVar24 + 1" (identifier "lVar24") (= "=") (binary_expression "lVar24 + 1" (identifier "lVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar13 = *(long *)(param_3 + 0x340);" (assignment_expression "lVar13 = *(long *)(param_3 + 0x340)" (identifier "lVar13") (= "=") (pointer_expression "*(long *)(param_3 + 0x340)" (* "*") (cast_expression "(long *)(param_3 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x340)" (( "(") (binary_expression "param_3 + 0x340" (identifier "param_3") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (expression_statement "pfVar21 = pfVar21 + 1;" (assignment_expression "pfVar21 = pfVar21 + 1" (identifier "pfVar21") (= "=") (binary_expression "pfVar21 + 1" (identifier "pfVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar24 < lVar13)" (( "(") (binary_expression "lVar24 < lVar13" (identifier "lVar24") (< "<") (identifier "lVar13")) () ")")) (; ";")) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" (identifier "uVar14") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")))) (} "}"))) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar14;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return uVar14;\n  }" ({ "{") (return_statement "return uVar14;" (return "return") (identifier "uVar14") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

type_1
function_1
          (type_2 *var_2,type_3 *var_4,type_2 *destination,type_4 var_10,
          double var_6,double var_9,type_5 *pixel,type_6 *exception)

{
  double *var_48;
  float var_59;
  type_7 var_49;
  type_8 var_45;
  long var_62;
  type_9 *pPVar6;
  type_9 *pPVar7;
  long var_57;
  float fVar9;
  float var_58;
  type_10 var_60;
  float var_56;
  type_1 MVar13;
  size_t var_20;
  type_5 *var_13;
  long var_28;
  double *var_47;
  long var_29;
  float *var_46;
  long var_19;
  type_5 *var_53;
  type_8 var_15;
  ssize_t var_42;
  long var_1;
  double var_16;
  double var_24;
  double var_25;
  double var_32;
  double var_55;
  double var_17;
  double var_23;
  double var_31;
  double var_18;
  double var_22;
  double var_34;
  double var_54;
  double var_36;
  double var_40;
  ssize_t var_43;
  double var_61;
  double alpha [16];
  double var_44 [16];
  
  var_62 = *(long *)(var_1 + 0x28);
  if (var_2 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"InterpolatePixelChannels")
    ;
  }
  if (var_2->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_3("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,
                  "InterpolatePixelChannels");
  }
  if (var_4 == (type_3 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,
                  "InterpolatePixelChannels");
  }
  var_16 = var_5;
  if (var_5 <= var_6) {
    var_16 = (double)((type_10)var_7 & -(type_10)(var_7 < var_6) |
                     ~-(type_10)(var_7 < var_6) & (type_10)var_6);
  }
  var_16 = var_8(var_16);
  var_42 = (ssize_t)var_16;
  var_16 = var_5;
  if (var_5 <= var_9) {
    var_16 = (double)((type_10)var_7 & -(type_10)(var_7 < var_9) |
                     ~-(type_10)(var_7 < var_9) & (type_10)var_9);
  }
  var_16 = var_8(var_16);
  var_43 = (ssize_t)var_16;
  if (var_10 == var_11) {
    var_10 = var_2->interpolate;
  }
  var_36 = var_6;
  var_40 = var_9;
  switch(var_10) {
  default:
    var_13 = var_12(var_4,var_42,var_43,2,2,exception);
    var_16 = var_27;
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      var_20 = var_2->number_channels;
      if ((long)var_20 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_19 = 0;
        do {
          pPVar6 = var_2->channel_map;
          var_49 = pPVar6[var_19].channel;
          pPVar7 = destination->channel_map;
          var_15 = pPVar7[var_49].traits;
          if ((pPVar6[var_49].traits != var_14) && (var_15 != var_14)) {
            var_17 = var_6 - (double)var_42;
            var_18 = var_9 - (double)var_43;
            var_23 = var_16 - var_17;
            var_22 = var_16 - var_18;
            var_28 = var_19 + var_20 * 2;
            if ((pPVar6[var_49].traits & var_21) == var_14) {
              var_24 = var_22 * (var_17 + var_23) + (var_17 + var_23) * var_18;
              var_25 = DAT_003f9c68;
              if (0.0 <= var_24) {
                var_25 = var_27;
              }
              if (var_25 * var_24 < var_26) {
                var_24 = var_25 / var_26;
              }
              else {
                var_24 = var_27 / var_24;
              }
              if (var_15 != var_14) {
                pixel[pPVar7[var_49].offset] =
                     (float)((var_22 * ((double)var_13[var_19] * var_23 +
                                       (double)var_13[var_19 + var_20] * var_17) +
                             var_18 * (var_17 * (double)var_13[var_28 + var_20] +
                                      var_23 * (double)var_13[var_28])) * var_24);
              }
            }
            else {
              var_31 = var_27;
              var_25 = var_16;
              var_24 = var_16;
              var_58 = _DAT_003fa400;
              if (pPVar6[4].traits != var_14) {
                var_29 = pPVar6[4].offset;
                var_31 = (double)var_13[var_20 * 2 + var_29] * var_30;
                var_25 = (double)var_13[var_20 + var_29] * var_30;
                var_24 = (double)var_13[var_29] * var_30;
                var_58 = var_13[var_20 * 3 + var_29];
              }
              var_32 = (var_23 * var_24 + var_17 * var_25) * var_22 +
                       (var_17 * (double)var_58 * var_30 + var_23 * var_31) * var_18;
              var_34 = (double)((type_10)DAT_003f9c68 & -(type_10)(var_32 < var_33) |
                               ~-(type_10)(var_32 < var_33) & (type_10)var_27);
              if (var_34 * var_32 < var_26) {
                var_32 = var_34 / var_26;
              }
              else {
                var_32 = var_27 / var_32;
              }
              if (var_15 != var_14) {
                pixel[pPVar7[var_49].offset] =
                     (float)(var_32 * (var_22 * ((double)var_13[var_19] * var_24 * var_23 +
                                                (double)var_13[var_19 + var_20] * var_25 * var_17)
                                      + var_18 * (var_17 * (double)var_58 * var_30 *
                                                           (double)var_13[var_28 + var_20] +
                                                 var_23 * (double)var_13[var_28] * var_31)));
              }
            }
          }
          var_19 = var_19 + 1;
          var_20 = var_2->number_channels;
        } while (var_19 < (long)var_20);
        MVar13 = MagickTrue;
      }
    }
    break;
  case AverageInterpolatePixel:
  case var_35:
  case var_41:
    if (var_10 == var_35) {
      if (var_6 < var_5) {
        var_36 = var_5;
      }
      else if (var_7 < var_6) {
        var_36 = var_7;
      }
      var_36 = var_36 + var_37;
      if ((double)((type_10)var_36 & var_38) < var_39) {
        var_36 = (double)((type_10)((double)(long)var_36 -
                                    (double)(-(type_10)(var_36 < (double)(long)var_36) &
                                            (type_10)var_27)) | ~var_38 & (type_10)var_36
                            );
      }
      var_42 = (ssize_t)(var_36 - var_27);
      if (var_9 < var_5) {
        var_40 = var_5;
      }
      else if (var_7 < var_9) {
        var_40 = var_7;
      }
      var_40 = var_40 + var_37;
      if ((double)((type_10)var_40 & var_38) < var_39) {
        var_40 = (double)((type_10)((double)(long)var_40 -
                                    (double)(-(type_10)(var_40 < (double)(long)var_40) &
                                            (type_10)var_27)) | ~var_38 & (type_10)var_40
                            );
      }
      var_43 = (ssize_t)(var_40 - var_27);
      var_20 = 3;
    }
    else {
      var_20 = 2;
      if (var_10 == var_41) {
        var_42 = var_42 + -1;
        var_43 = var_43 + -1;
        var_20 = 4;
      }
    }
    var_13 = var_12(var_4,var_42,var_43,var_20,var_20,exception);
    var_23 = DAT_003f9c68;
    var_17 = var_30;
    var_16 = var_27;
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      var_19 = var_20 * var_20;
      var_20 = var_2->number_channels;
      if ((long)var_20 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_48 = var_44 + var_19;
        var_28 = 0;
        do {
          pPVar6 = var_2->channel_map;
          var_49 = pPVar6[var_28].channel;
          var_15 = pPVar6[var_49].traits;
          pPVar7 = destination->channel_map;
          var_45 = pPVar7[var_49].traits;
          if ((var_15 != var_14) && (var_45 != var_14)) {
            if (var_19 == 0) {
              var_18 = 0.0;
              if ((var_15 & var_21) == var_14) {
                var_18 = 0.0;
                goto LAB_00253e49;
              }
            }
            else {
              var_46 = var_13 + var_28;
              var_47 = var_44;
              do {
                *var_47 = (double)*var_46;
                var_46 = var_46 + var_20;
                var_47 = var_47 + 1;
              } while (var_48 != var_47);
              if ((var_15 & var_21) == var_14) {
                var_29 = 0;
                var_18 = 0.0;
                do {
                  var_18 = var_18 + var_44[var_29];
                  var_29 = var_29 + 1;
                } while (var_19 - var_29 != 0 && var_29 <= var_19);
LAB_00253e49:
                if (var_45 != var_14) {
                  pixel[pPVar7[var_49].offset] = (float)(var_18 / (double)var_19);
                }
                goto LAB_0025586a;
              }
              var_15 = pPVar6[4].traits;
              var_29 = 0;
              var_18 = 0.0;
              var_47 = var_44;
              do {
                if (var_15 == var_14) {
                  var_22 = *var_47;
                  var_25 = var_16;
LAB_00255912:
                  var_24 = var_16 / var_25;
                }
                else {
                  var_25 = (double)var_13[var_29 + pPVar6[4].offset] * var_17;
                  var_22 = var_25 * *var_47;
                  *var_47 = var_22;
                  var_24 = (double)((type_10)var_23 & -(type_10)(var_25 < 0.0) |
                                   ~-(type_10)(var_25 < 0.0) & (type_10)var_27);
                  if (var_26 <= var_25 * var_24) goto LAB_00255912;
                  var_24 = var_24 / var_26;
                }
                var_18 = var_18 + var_22 * var_24;
                var_29 = var_29 + var_20;
                var_47 = var_47 + 1;
              } while (var_47 != var_48);
            }
            if (var_45 != var_14) {
              pixel[pPVar7[var_49].offset] = (float)(var_18 / (double)var_19);
            }
          }
LAB_0025586a:
          var_28 = var_28 + 1;
          var_20 = var_2->number_channels;
        } while (var_28 < (long)var_20);
        MVar13 = MagickTrue;
      }
    }
    break;
  case BlendInterpolatePixel:
    var_13 = var_12(var_4,var_42,var_43,2,2,exception);
    var_23 = var_52;
    var_58 = _DAT_003fa400;
    var_17 = var_27;
    var_16 = var_26;
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      var_20 = var_2->number_channels;
      if ((long)var_20 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_19 = 0;
        var_53 = var_13;
        do {
          pPVar6 = var_2->channel_map;
          var_49 = pPVar6[var_19].channel;
          if ((destination->channel_map[var_49].traits != var_14) &&
             (pPVar6[var_49].traits != var_14)) {
            if (var_2->alpha_trait == var_21) {
              var_15 = pPVar6[4].traits;
              var_29 = 0;
              var_28 = 0;
              do {
                var_59 = var_58;
                if (var_15 != var_14) {
                  var_59 = var_13[var_29 + pPVar6[4].offset];
                }
                alpha[var_28] = (double)var_59 * var_30;
                if (var_49 == var_50) {
                  var_44[var_28] = (double)var_53[var_29];
                }
                else {
                  var_44[var_28] = (double)var_59 * var_30 * (double)var_53[var_29];
                }
                var_28 = var_28 + 1;
                var_29 = var_29 + var_20;
              } while (var_28 != 4);
            }
            else {
              var_28 = 0;
              var_46 = var_53;
              do {
                alpha[var_28] = var_27;
                var_44[var_28] = (double)*var_46;
                var_28 = var_28 + 1;
                var_46 = var_46 + var_20;
              } while (var_28 != 4);
            }
            var_22 = var_9 - (double)var_43;
            var_18 = var_27;
            if (var_23 <= var_22) {
              alpha[0] = alpha[2];
              var_44[0] = var_44[2];
LAB_00254349:
              alpha[1] = alpha[3];
              var_44[1] = var_44[3];
            }
            else if (var_22 <= var_51) {
              if (var_52 <= var_22) goto LAB_00254349;
              if (var_51 < var_22) goto LAB_002544fd;
            }
            else {
              alpha[0] = alpha[0] + alpha[2];
              var_44[0] = var_44[0] + var_44[2];
              var_18 = DAT_00407728;
              if (var_52 <= var_22) goto LAB_00254349;
LAB_002544fd:
              alpha[1] = alpha[1] + alpha[3];
              var_44[1] = var_44[1] + var_44[3];
              var_18 = DAT_00407728;
            }
            if (var_6 - (double)var_42 < var_23) {
              if (var_51 < var_6 - (double)var_42) {
                var_18 = var_18 + var_18;
                alpha[0] = alpha[0] + alpha[1];
                var_44[0] = var_44[0] + var_44[1];
              }
            }
            else {
              alpha[0] = alpha[1];
              var_44[0] = var_44[1];
            }
            if (var_49 == var_50) {
              var_22 = DAT_003fa390;
              if (var_16 <= var_18) {
                var_22 = var_17 / var_18;
              }
            }
            else {
              var_18 = DAT_003f9c68;
              if (0.0 <= alpha[0]) {
                var_18 = var_27;
              }
              if (alpha[0] * var_18 < var_16) {
                var_22 = var_18 / var_16;
              }
              else {
                var_22 = var_27 / alpha[0];
              }
            }
            if (destination->channel_map[var_49].traits != var_14) {
              pixel[destination->channel_map[var_49].offset] = (float)(var_22 * var_44[0]);
            }
          }
          var_19 = var_19 + 1;
          var_20 = var_2->number_channels;
          var_53 = var_53 + 1;
        } while (var_19 < (long)var_20);
        MVar13 = MagickTrue;
      }
    }
    break;
  case CatromInterpolatePixel:
    var_13 = var_12(var_4,var_42 + -1,var_43 + -1,4,4,exception);
    var_17 = DAT_00406598;
    var_58 = _DAT_003fa400;
    var_16 = var_27;
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      var_20 = var_2->number_channels;
      if ((long)var_20 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_19 = 0;
        var_53 = var_13;
        do {
          pPVar6 = var_2->channel_map;
          var_49 = pPVar6[var_19].channel;
          if ((destination->channel_map[var_49].traits != var_14) &&
             (pPVar6[var_49].traits != var_14)) {
            var_15 = pPVar6[var_49].traits & var_21;
            if (var_15 == var_14) {
              var_28 = 0;
              var_46 = var_53;
              do {
                alpha[var_28] = var_27;
                var_44[var_28] = (double)*var_46;
                var_28 = var_28 + 1;
                var_46 = var_46 + var_20;
              } while (var_28 != 0x10);
            }
            else {
              var_45 = pPVar6[4].traits;
              var_29 = 0;
              var_28 = 0;
              do {
                var_59 = var_58;
                if (var_45 != var_14) {
                  var_59 = var_13[var_29 + pPVar6[4].offset];
                }
                alpha[var_28] = (double)var_59 * var_30;
                var_44[var_28] = (double)var_59 * var_30 * (double)var_53[var_29];
                var_28 = var_28 + 1;
                var_29 = var_29 + var_20;
              } while (var_28 != 0x10);
            }
            var_25 = var_6 - (double)var_42;
            var_23 = var_16 - var_25;
            var_18 = var_25 * var_17 * var_23;
            var_24 = var_23 * var_18;
            var_18 = var_18 * var_25;
            var_22 = (var_23 - var_24) + (var_18 - var_24);
            var_34 = (var_25 - var_18) - (var_18 - var_24);
            var_23 = var_9 - (double)var_43;
            var_31 = var_16 - var_23;
            var_32 = var_23 * var_17 * var_31;
            var_25 = var_31 * var_32;
            var_32 = var_32 * var_23;
            var_54 = (var_31 - var_25) + (var_32 - var_25);
            var_31 = (var_23 - var_32) - (var_32 - var_25);
            var_23 = var_27;
            if (var_15 == var_14) {
              var_23 = (var_34 * alpha[10] + var_24 * alpha[8] + var_22 * alpha[9] +
                       var_18 * alpha[0xb]) * var_31 +
                       (var_24 * alpha[0] + var_22 * alpha[1] + var_34 * alpha[2] +
                       var_18 * alpha[3]) * var_25 +
                       (var_34 * alpha[6] + var_24 * alpha[4] + var_22 * alpha[5] +
                       var_18 * alpha[7]) * var_54 +
                       (var_34 * alpha[0xe] + var_24 * alpha[0xc] + var_22 * alpha[0xd] +
                       var_18 * alpha[0xf]) * var_32;
              var_55 = DAT_003f9c68;
              if (0.0 <= var_23) {
                var_55 = var_27;
              }
              if (var_23 * var_55 < var_26) {
                var_23 = var_55 / var_26;
              }
              else {
                var_23 = var_27 / var_23;
              }
            }
            if (destination->channel_map[var_49].traits != var_14) {
              pixel[destination->channel_map[var_49].offset] =
                   (float)((var_25 * (var_34 * var_44[2] + var_24 * var_44[0] + var_22 * var_44[1] +
                                     var_18 * var_44[3]) +
                            (var_34 * var_44[6] + var_24 * var_44[4] + var_22 * var_44[5] +
                            var_18 * var_44[7]) * var_54 +
                            var_31 * (var_18 * var_44[0xb] +
                                     var_34 * var_44[10] + var_24 * var_44[8] + var_22 * var_44[9])
                           + (var_18 * var_44[0xf] +
                             var_34 * var_44[0xe] + var_24 * var_44[0xc] + var_22 * var_44[0xd]) *
                             var_32) * var_23);
            }
          }
          var_19 = var_19 + 1;
          var_20 = var_2->number_channels;
          var_53 = var_53 + 1;
        } while (var_19 < (long)var_20);
        MVar13 = MagickTrue;
      }
    }
    break;
  case IntegerInterpolatePixel:
    var_13 = var_12(var_4,var_42,var_43,1,1,exception);
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      if ((long)var_2->number_channels < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_19 = 0;
        do {
          var_49 = var_2->channel_map[var_19].channel;
          pPVar6 = destination->channel_map;
          if (((pPVar6[var_49].traits != var_14) &&
              (var_2->channel_map[var_49].traits != var_14)) &&
             (pPVar6[var_49].traits != var_14)) {
            pixel[pPVar6[var_49].offset] = var_13[var_19];
          }
          var_19 = var_19 + 1;
        } while (var_19 < (long)var_2->number_channels);
        MVar13 = MagickTrue;
      }
    }
    break;
  case MeshInterpolatePixel:
    var_13 = var_12(var_4,var_42,var_43,2,2,exception);
    var_56 = DAT_0041abe0;
    var_59 = DAT_0041abdc;
    var_58 = DAT_0041abd8;
    var_60 = var_38;
    var_16 = var_27;
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      var_20 = var_2->number_channels;
      if ((long)var_20 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_19 = 0;
        do {
          pPVar6 = var_2->channel_map;
          var_49 = pPVar6[var_19].channel;
          if ((destination->channel_map[var_49].traits != var_14) &&
             (pPVar6[var_49].traits != var_14)) {
            var_25 = (double)var_13[var_19];
            var_18 = (double)var_13[var_19 + var_20];
            var_28 = var_19 + var_20 * 2;
            var_22 = (double)var_13[var_28];
            var_23 = (double)var_13[var_28 + var_20];
            var_17 = var_16;
            if ((pPVar6[var_49].traits & var_21) == var_14) {
              var_61 = var_16;
              var_31 = var_27;
              var_24 = var_16;
            }
            else {
              if (pPVar6[4].traits == var_14) {
                var_61 = var_16;
                var_24 = var_27;
                fVar9 = _DAT_003fa400;
              }
              else {
                var_28 = pPVar6[4].offset;
                var_61 = (double)var_13[var_20 + var_28] * var_30;
                var_17 = (double)var_13[var_28] * var_30;
                var_24 = (double)var_13[var_20 * 2 + var_28] * var_30;
                fVar9 = var_13[var_20 * 3 + var_28];
              }
              var_31 = (double)fVar9 * var_30;
            }
            var_34 = var_6 - (double)var_42;
            var_32 = var_9 - (double)var_43;
            pPVar6 = var_2->channel_map;
            var_28 = pPVar6->offset;
            var_29 = pPVar6[1].offset;
            var_57 = pPVar6[2].offset;
            var_20 = var_2->number_channels;
            if ((double)((type_10)((double)(var_56 * var_13[var_20 + var_57] +
                                         var_58 * var_13[var_20 + var_28] +
                                         var_59 * var_13[var_20 + var_29]) -
                                (double)(var_56 * var_13[var_20 * 2 + var_57] +
                                        var_58 * var_13[var_20 * 2 + var_28] +
                                        var_59 * var_13[var_20 * 2 + var_29])) & var_60) <=
                (double)((type_10)((double)(var_59 * var_13[var_29] + var_58 * var_13[var_28] +
                                         var_56 * var_13[var_57]) -
                                (double)(var_56 * var_13[var_20 * 3 + var_57] +
                                        var_59 * var_13[var_20 * 3 + var_29] +
                                        var_58 * var_13[var_20 * 3 + var_28])) & var_60)) {
              var_54 = var_27 - var_32;
              if (var_54 < var_34) {
                var_34 = var_27 - var_34;
                var_25 = (var_27 - var_34) - var_54;
                var_24 = var_31 * var_25 + var_24 * var_34 + var_61 * var_54;
                var_17 = DAT_003f9c68;
                if (0.0 <= var_24) {
                  var_17 = var_27;
                }
                if (var_17 * var_24 < var_26) {
                  var_24 = var_17 / var_26;
                }
                else {
                  var_24 = var_27 / var_24;
                }
                if (destination->channel_map[var_49].traits != var_14) {
                  pixel[destination->channel_map[var_49].offset] =
                       (float)((var_25 * var_23 + var_18 * var_54 + var_22 * var_34) * var_24);
                }
              }
              else {
                var_23 = (var_27 - var_34) - var_32;
                var_24 = var_17 * var_23 + var_24 * var_32 + var_61 * var_34;
                var_17 = DAT_003f9c68;
                if (0.0 <= var_24) {
                  var_17 = var_27;
                }
                if (var_17 * var_24 < var_26) {
                  var_24 = var_17 / var_26;
                }
                else {
                  var_24 = var_27 / var_24;
                }
                if (destination->channel_map[var_49].traits != var_14) {
                  pixel[destination->channel_map[var_49].offset] =
                       (float)(var_24 * (var_25 * var_23 + var_32 * var_22 + var_34 * var_18));
                }
              }
            }
            else if (var_32 < var_34) {
              var_34 = var_27 - var_34;
              var_22 = (var_27 - var_34) - var_32;
              var_24 = var_31 * var_32 + var_17 * var_34 + var_61 * var_22;
              var_17 = DAT_003f9c68;
              if (0.0 <= var_24) {
                var_17 = var_27;
              }
              if (var_17 * var_24 < var_26) {
                var_24 = var_17 / var_26;
              }
              else {
                var_24 = var_27 / var_24;
              }
              if (destination->channel_map[var_49].traits != var_14) {
                pixel[destination->channel_map[var_49].offset] =
                     (float)((var_22 * var_18 + var_34 * var_25 + var_32 * var_23) * var_24);
              }
            }
            else {
              var_32 = var_27 - var_32;
              var_18 = (var_27 - var_34) - var_32;
              var_24 = var_31 * var_34 + var_17 * var_32 + var_24 * var_18;
              var_17 = DAT_003f9c68;
              if (0.0 <= var_24) {
                var_17 = var_27;
              }
              if (var_17 * var_24 < var_26) {
                var_24 = var_17 / var_26;
              }
              else {
                var_24 = var_27 / var_24;
              }
              if (destination->channel_map[var_49].traits != var_14) {
                pixel[destination->channel_map[var_49].offset] =
                     (float)(var_24 * (var_18 * var_22 + var_25 * var_32 + var_34 * var_23));
              }
            }
          }
          var_19 = var_19 + 1;
          var_20 = var_2->number_channels;
        } while (var_19 < (long)var_20);
        MVar13 = MagickTrue;
      }
    }
    break;
  case NearestInterpolatePixel:
    if (var_6 < var_5) {
      var_36 = var_5;
    }
    else if (var_7 < var_6) {
      var_36 = var_7;
    }
    var_16 = var_8(var_36 + var_37);
    if (var_9 < var_5) {
      var_40 = var_5;
    }
    else if (var_7 < var_9) {
      var_40 = var_7;
    }
    var_17 = var_8(var_40 + var_37);
    var_13 = var_12(var_4,(long)var_16,(long)var_17,1,1,exception);
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      if ((long)var_2->number_channels < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_19 = 0;
        do {
          var_49 = var_2->channel_map[var_19].channel;
          pPVar6 = destination->channel_map;
          if (((pPVar6[var_49].traits != var_14) &&
              (var_2->channel_map[var_49].traits != var_14)) &&
             (pPVar6[var_49].traits != var_14)) {
            pixel[pPVar6[var_49].offset] = var_13[var_19];
          }
          var_19 = var_19 + 1;
        } while (var_19 < (long)var_2->number_channels);
        MVar13 = MagickTrue;
      }
    }
    break;
  case SplineInterpolatePixel:
    var_13 = var_12(var_4,var_42 + -1,var_43 + -1,4,4,exception);
    var_17 = DAT_0041d760;
    var_58 = _DAT_003fa400;
    var_16 = var_27;
    MVar13 = MagickFalse;
    if (var_13 != (type_5 *)0x0) {
      var_20 = var_2->number_channels;
      if ((long)var_20 < 1) {
        MVar13 = MagickTrue;
      }
      else {
        var_19 = 0;
        var_53 = var_13;
        do {
          pPVar6 = var_2->channel_map;
          var_49 = pPVar6[var_19].channel;
          if ((destination->channel_map[var_49].traits != var_14) &&
             (pPVar6[var_49].traits != var_14)) {
            var_15 = pPVar6[var_49].traits & var_21;
            if (var_15 == var_14) {
              var_28 = 0;
              var_46 = var_53;
              do {
                alpha[var_28] = var_27;
                var_44[var_28] = (double)*var_46;
                var_28 = var_28 + 1;
                var_46 = var_46 + var_20;
              } while (var_28 != 0x10);
            }
            else {
              var_45 = pPVar6[4].traits;
              var_29 = 0;
              var_28 = 0;
              do {
                var_59 = var_58;
                if (var_45 != var_14) {
                  var_59 = var_13[var_29 + pPVar6[4].offset];
                }
                alpha[var_28] = (double)var_59 * var_30;
                var_44[var_28] = (double)var_59 * var_30 * (double)var_53[var_29];
                var_28 = var_28 + 1;
                var_29 = var_29 + var_20;
              } while (var_28 != 0x10);
            }
            var_18 = var_6 - (double)var_42;
            var_23 = var_16 - var_18;
            var_22 = var_18 * var_17 * var_18 * var_18;
            var_25 = var_23 * var_17 * var_23 * var_23;
            var_24 = (var_23 - var_25) + (var_22 - var_25);
            var_31 = (var_18 - var_22) - (var_22 - var_25);
            var_18 = var_9 - (double)var_43;
            var_34 = var_16 - var_18;
            var_32 = var_18 * var_17 * var_18 * var_18;
            var_23 = var_34 * var_17 * var_34 * var_34;
            var_54 = (var_34 - var_23) + (var_32 - var_23);
            var_34 = (var_18 - var_32) - (var_32 - var_23);
            var_18 = var_27;
            if (var_15 == var_14) {
              var_18 = (var_31 * alpha[6] + var_25 * alpha[4] + var_24 * alpha[5] +
                       var_22 * alpha[7]) * var_54 +
                       (var_22 * alpha[3] +
                       var_25 * alpha[0] + var_24 * alpha[1] + var_31 * alpha[2]) * var_23 +
                       (var_31 * alpha[10] + var_25 * alpha[8] + var_24 * alpha[9] +
                       var_22 * alpha[0xb]) * var_34 +
                       (var_31 * alpha[0xe] + var_25 * alpha[0xc] + var_24 * alpha[0xd] +
                       var_22 * alpha[0xf]) * var_32;
              var_55 = DAT_003f9c68;
              if (0.0 <= var_18) {
                var_55 = var_27;
              }
              if (var_18 * var_55 < var_26) {
                var_18 = var_55 / var_26;
              }
              else {
                var_18 = var_27 / var_18;
              }
            }
            if (destination->channel_map[var_49].traits != var_14) {
              pixel[destination->channel_map[var_49].offset] =
                   (float)((var_54 * (var_31 * var_44[6] + var_25 * var_44[4] + var_24 * var_44[5] +
                                     var_22 * var_44[7]) +
                            var_23 * (var_31 * var_44[2] + var_25 * var_44[0] + var_24 * var_44[1] +
                                     var_22 * var_44[3]) +
                            var_34 * (var_22 * var_44[0xb] +
                                     var_31 * var_44[10] + var_25 * var_44[8] + var_24 * var_44[9])
                           + (var_31 * var_44[0xe] + var_25 * var_44[0xc] + var_24 * var_44[0xd] +
                             var_22 * var_44[0xf]) * var_32) * var_18);
            }
          }
          var_19 = var_19 + 1;
          var_20 = var_2->number_channels;
          var_53 = var_53 + 1;
        } while (var_19 < (long)var_20);
        MVar13 = MagickTrue;
      }
    }
  }
  if (var_62 == *(long *)(var_1 + 0x28)) {
    return MVar13;
  }
                    /* WARNING: Subroutine does not return */
  var_63();
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8
MASKED
          (double param_1,double param_2,long param_3,long param_4,long param_5,int param_6,
          long param_7,undefined8 param_8)

{
  double *pdVar1;
  float fVar2;
  int iVar3;
  int iVar4;
  long lVar5;
  long lVar6;
  long lVar7;
  float fVar8;
  float fVar9;
  double dVar10;
  ulong uVar11;
  float fVar12;
  long lVar13;
  undefined8 uVar14;
  float *pfVar15;
  double *pdVar16;
  long lVar17;
  long lVar18;
  float *pfVar19;
  long lVar20;
  float *pfVar21;
  long lVar22;
  uint uVar23;
  long lVar24;
  long lVar25;
  long in_FS_OFFSET;
  double dVar26;
  double dVar27;
  double dVar28;
  double dVar29;
  double dVar30;
  double dVar31;
  double dVar32;
  double dVar33;
  double dVar34;
  double dVar35;
  double dVar36;
  double dVar37;
  double dVar38;
  double local_178;
  double local_170;
  long local_168;
  double local_160;
  double local_148 [16];
  double local_c8 [17];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source != (Image *) NULL","MagickCore/pixel.c",0x134f,"MASKED")
    ;
  }
  if (*(long *)(param_3 + 0x3450) != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source->signature == MagickCoreSignature","MagickCore/pixel.c",0x1350,
                  "MASKED");
  }
  if (param_4 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("source_view != (CacheView *) NULL","MagickCore/pixel.c",0x1351,
                  "MASKED");
  }
  dVar26 = DAT_004294e8;
  if (DAT_004294e8 <= param_1) {
    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_1) |
                     ~-(ulong)(DAT_004294f0 < param_1) & (ulong)param_1);
  }
  dVar26 = floor(dVar26);
  lVar25 = (long)dVar26;
  dVar26 = DAT_004294e8;
  if (DAT_004294e8 <= param_2) {
    dVar26 = (double)((ulong)DAT_004294f0 & -(ulong)(DAT_004294f0 < param_2) |
                     ~-(ulong)(DAT_004294f0 < param_2) & (ulong)param_2);
  }
  dVar26 = floor(dVar26);
  local_168 = (long)dVar26;
  if (param_6 == 0) {
    param_6 = *(int *)(param_3 + 0x2f8);
  }
  local_178 = param_1;
  local_170 = param_2;
  switch(param_6) {
  default:
    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (lVar13 != 0) {
      lVar24 = *(long *)(param_3 + 0x340);
      if (lVar24 < 1) {
        uVar14 = 1;
      }
      else {
        lVar20 = 0;
        do {
          lVar18 = *(long *)(param_3 + 0x360);
          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar18 + 4 + lVar17);
          lVar17 = lVar17 + *(long *)(param_5 + 0x360);
          iVar3 = *(int *)(lVar17 + 4);
          if ((uVar23 != 0) && (iVar3 != 0)) {
            dVar31 = param_1 - (double)lVar25;
            dVar34 = param_2 - (double)local_168;
            dVar32 = dVar26 - dVar31;
            dVar37 = dVar26 - dVar34;
            dVar28 = (double)*(float *)(lVar13 + lVar20 * 4);
            dVar35 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);
            lVar22 = lVar20 + lVar24 * 2;
            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);
            dVar36 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);
            if ((uVar23 & 4) == 0) {
              dVar27 = dVar37 * (dVar31 + dVar32) + (dVar31 + dVar32) * dVar34;
              dVar38 = DAT_003f9c68;
              if (0.0 <= dVar27) {
                dVar38 = DAT_003f9608;
              }
              if (dVar38 * dVar27 < DAT_003f9600) {
                dVar27 = dVar38 / DAT_003f9600;
              }
              else {
                dVar27 = DAT_003f9608 / dVar27;
              }
              if (iVar3 != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)((dVar37 * (dVar28 * dVar32 + dVar35 * dVar31) +
                             dVar34 * (dVar31 * dVar36 + dVar32 * dVar33)) * dVar27);
              }
            }
            else {
              dVar30 = DAT_003f9608;
              dVar38 = dVar26;
              dVar27 = dVar26;
              fVar9 = _DAT_003fa400;
              if (*(int *)(lVar18 + 0x44) != 0) {
                lVar22 = *(long *)(lVar18 + 0x48) * 4;
                dVar30 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;
                dVar38 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;
                dVar27 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;
                fVar9 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);
              }
              dVar29 = (dVar32 * dVar27 + dVar31 * dVar38) * dVar37 +
                       (dVar31 * (double)fVar9 * DAT_003f9c60 + dVar32 * dVar30) * dVar34;
              dVar10 = (double)((ulong)DAT_003f9c68 & -(ulong)(dVar29 < DAT_003fa398) |
                               ~-(ulong)(dVar29 < DAT_003fa398) & (ulong)DAT_003f9608);
              if (dVar10 * dVar29 < DAT_003f9600) {
                dVar29 = dVar10 / DAT_003f9600;
              }
              else {
                dVar29 = DAT_003f9608 / dVar29;
              }
              if (iVar3 != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)(dVar29 * (dVar37 * (dVar28 * dVar27 * dVar32 + dVar35 * dVar38 * dVar31
                                                ) +
                                      dVar34 * (dVar31 * (double)fVar9 * DAT_003f9c60 * dVar36 +
                                               dVar32 * dVar33 * dVar30)));
              }
            }
          }
          lVar20 = lVar20 + 1;
          lVar24 = *(long *)(param_3 + 0x340);
        } while (lVar20 < lVar24);
        uVar14 = 1;
      }
    }
    break;
  case 1:
  case 2:
  case 3:
    if (param_6 == 2) {
      if (param_1 < DAT_004294e8) {
        local_178 = DAT_004294e8;
      }
      else if (DAT_004294f0 < param_1) {
        local_178 = DAT_004294f0;
      }
      local_178 = local_178 + DAT_003f9c28;
      if ((double)((ulong)local_178 & DAT_003f9c70) < DAT_003f9c30) {
        local_178 = (double)((ulong)((double)(long)local_178 -
                                    (double)(-(ulong)(local_178 < (double)(long)local_178) &
                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_178
                            );
      }
      lVar25 = (long)(local_178 - DAT_003f9608);
      if (param_2 < DAT_004294e8) {
        local_170 = DAT_004294e8;
      }
      else if (DAT_004294f0 < param_2) {
        local_170 = DAT_004294f0;
      }
      local_170 = local_170 + DAT_003f9c28;
      if ((double)((ulong)local_170 & DAT_003f9c70) < DAT_003f9c30) {
        local_170 = (double)((ulong)((double)(long)local_170 -
                                    (double)(-(ulong)(local_170 < (double)(long)local_170) &
                                            (ulong)DAT_003f9608)) | ~DAT_003f9c70 & (ulong)local_170
                            );
      }
      local_168 = (long)(local_170 - DAT_003f9608);
      lVar13 = 3;
    }
    else {
      lVar13 = 2;
      if (param_6 == 3) {
        lVar25 = lVar25 + -1;
        local_168 = local_168 + -1;
        lVar13 = 4;
      }
    }
    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,lVar13,lVar13,param_8);
    dVar31 = DAT_003f9c68;
    dVar28 = DAT_003f9c60;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (lVar25 != 0) {
      lVar13 = lVar13 * lVar13;
      lVar24 = *(long *)(param_3 + 0x340);
      if (lVar24 < 1) {
        uVar14 = 1;
      }
      else {
        pdVar1 = local_c8 + lVar13;
        lVar20 = 0;
        do {
          lVar18 = *(long *)(param_3 + 0x360);
          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar18 + 4 + lVar17);
          lVar17 = lVar17 + *(long *)(param_5 + 0x360);
          iVar3 = *(int *)(lVar17 + 4);
          if ((uVar23 != 0) && (iVar3 != 0)) {
            if (lVar13 == 0) {
              dVar32 = 0.0;
              if ((uVar23 & 4) == 0) {
                dVar32 = 0.0;
                goto LAB_00253e49;
              }
            }
            else {
              pfVar15 = (float *)(lVar25 + lVar20 * 4);
              pdVar16 = local_c8;
              do {
                *pdVar16 = (double)*pfVar15;
                pfVar15 = pfVar15 + lVar24;
                pdVar16 = pdVar16 + 1;
              } while (pdVar1 != pdVar16);
              if ((uVar23 & 4) == 0) {
                lVar24 = 0;
                dVar32 = 0.0;
                do {
                  dVar32 = dVar32 + local_c8[lVar24];
                  lVar24 = lVar24 + 1;
                } while (lVar13 - lVar24 != 0 && lVar24 <= lVar13);
LAB_00253e49:
                if (iVar3 != 0) {
                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13)
                  ;
                }
                goto LAB_0025586a;
              }
              iVar4 = *(int *)(lVar18 + 0x44);
              lVar22 = 0;
              dVar32 = 0.0;
              pdVar16 = local_c8;
              do {
                if (iVar4 == 0) {
                  dVar33 = *pdVar16;
                  dVar34 = dVar26;
LAB_00255912:
                  dVar35 = dVar26 / dVar34;
                }
                else {
                  dVar34 = (double)*(float *)(lVar25 + (lVar22 + *(long *)(lVar18 + 0x48)) * 4) *
                           dVar28;
                  dVar33 = dVar34 * *pdVar16;
                  *pdVar16 = dVar33;
                  dVar35 = (double)((ulong)dVar31 & -(ulong)(dVar34 < 0.0) |
                                   ~-(ulong)(dVar34 < 0.0) & (ulong)DAT_003f9608);
                  if (DAT_003f9600 <= dVar34 * dVar35) goto LAB_00255912;
                  dVar35 = dVar35 / DAT_003f9600;
                }
                dVar32 = dVar32 + dVar33 * dVar35;
                lVar22 = lVar22 + lVar24;
                pdVar16 = pdVar16 + 1;
              } while (pdVar16 != pdVar1);
            }
            if (iVar3 != 0) {
              *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) = (float)(dVar32 / (double)lVar13);
            }
          }
LAB_0025586a:
          lVar20 = lVar20 + 1;
          lVar24 = *(long *)(param_3 + 0x340);
        } while (lVar20 < lVar24);
        uVar14 = 1;
      }
    }
    break;
  case 6:
    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);
    dVar31 = _DAT_004294f8;
    fVar9 = _DAT_003fa400;
    dVar28 = DAT_003f9608;
    dVar26 = DAT_003f9600;
    uVar14 = 0;
    if (pfVar15 != (float *)0x0) {
      lVar13 = *(long *)(param_3 + 0x340);
      if (lVar13 < 1) {
        uVar14 = 1;
      }
      else {
        lVar24 = 0;
        pfVar21 = pfVar15;
        do {
          lVar20 = *(long *)(param_3 + 0x360);
          uVar23 = *(uint *)(lVar20 + lVar24 * 0x10);
          lVar18 = (ulong)uVar23 * 0x10;
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) &&
             (*(int *)(lVar20 + 4 + lVar18) != 0)) {
            if (*(int *)(param_3 + 0x33c) == 4) {
              iVar3 = *(int *)(lVar20 + 0x44);
              lVar22 = 0;
              lVar17 = 0;
              do {
                fVar2 = fVar9;
                if (iVar3 != 0) {
                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];
                }
                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;
                if (uVar23 == 4) {
                  local_c8[lVar17] = (double)pfVar21[lVar22];
                }
                else {
                  local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];
                }
                lVar17 = lVar17 + 1;
                lVar22 = lVar22 + lVar13;
              } while (lVar17 != 4);
            }
            else {
              lVar20 = 0;
              pfVar19 = pfVar21;
              do {
                local_148[lVar20] = DAT_003f9608;
                local_c8[lVar20] = (double)*pfVar19;
                lVar20 = lVar20 + 1;
                pfVar19 = pfVar19 + lVar13;
              } while (lVar20 != 4);
            }
            dVar33 = param_2 - (double)local_168;
            dVar32 = DAT_003f9608;
            if (dVar31 <= dVar33) {
              local_148[0] = local_148[2];
              local_c8[0] = local_c8[2];
LAB_00254349:
              local_148[1] = local_148[3];
              local_c8[1] = local_c8[3];
            }
            else if (dVar33 <= DAT_00407738) {
              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;
              if (DAT_00407738 < dVar33) goto LAB_002544fd;
            }
            else {
              local_148[0] = local_148[0] + local_148[2];
              local_c8[0] = local_c8[0] + local_c8[2];
              dVar32 = DAT_00407728;
              if (_DAT_004294f8 <= dVar33) goto LAB_00254349;
LAB_002544fd:
              local_148[1] = local_148[1] + local_148[3];
              local_c8[1] = local_c8[1] + local_c8[3];
              dVar32 = DAT_00407728;
            }
            if (param_1 - (double)lVar25 < dVar31) {
              if (DAT_00407738 < param_1 - (double)lVar25) {
                dVar32 = dVar32 + dVar32;
                local_148[0] = local_148[0] + local_148[1];
                local_c8[0] = local_c8[0] + local_c8[1];
              }
            }
            else {
              local_148[0] = local_148[1];
              local_c8[0] = local_c8[1];
            }
            if (uVar23 == 4) {
              dVar33 = DAT_003fa390;
              if (dVar26 <= dVar32) {
                dVar33 = dVar28 / dVar32;
              }
            }
            else {
              dVar32 = DAT_003f9c68;
              if (0.0 <= local_148[0]) {
                dVar32 = DAT_003f9608;
              }
              if (local_148[0] * dVar32 < dVar26) {
                dVar33 = dVar32 / dVar26;
              }
              else {
                dVar33 = DAT_003f9608 / local_148[0];
              }
            }
            lVar18 = lVar18 + *(long *)(param_5 + 0x360);
            if (*(int *)(lVar18 + 4) != 0) {
              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) = (float)(dVar33 * local_c8[0]);
            }
          }
          lVar24 = lVar24 + 1;
          lVar13 = *(long *)(param_3 + 0x340);
          pfVar21 = pfVar21 + 1;
        } while (lVar24 < lVar13);
        uVar14 = 1;
      }
    }
    break;
  case 7:
    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);
    dVar28 = DAT_00406598;
    fVar9 = _DAT_003fa400;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (pfVar15 != (float *)0x0) {
      lVar13 = *(long *)(param_3 + 0x340);
      if (lVar13 < 1) {
        uVar14 = 1;
      }
      else {
        lVar24 = 0;
        pfVar21 = pfVar15;
        do {
          lVar20 = *(long *)(param_3 + 0x360);
          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar20 + 4 + lVar18);
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {
            uVar23 = uVar23 & 4;
            if (uVar23 == 0) {
              lVar20 = 0;
              pfVar19 = pfVar21;
              do {
                local_148[lVar20] = DAT_003f9608;
                local_c8[lVar20] = (double)*pfVar19;
                lVar20 = lVar20 + 1;
                pfVar19 = pfVar19 + lVar13;
              } while (lVar20 != 0x10);
            }
            else {
              iVar3 = *(int *)(lVar20 + 0x44);
              lVar22 = 0;
              lVar17 = 0;
              do {
                fVar2 = fVar9;
                if (iVar3 != 0) {
                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];
                }
                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;
                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];
                lVar17 = lVar17 + 1;
                lVar22 = lVar22 + lVar13;
              } while (lVar17 != 0x10);
            }
            dVar34 = param_1 - (double)lVar25;
            dVar31 = dVar26 - dVar34;
            dVar32 = dVar34 * dVar28 * dVar31;
            dVar35 = dVar31 * dVar32;
            dVar32 = dVar32 * dVar34;
            dVar33 = (dVar31 - dVar35) + (dVar32 - dVar35);
            dVar37 = (dVar34 - dVar32) - (dVar32 - dVar35);
            dVar31 = param_2 - (double)local_168;
            dVar36 = dVar26 - dVar31;
            dVar38 = dVar31 * dVar28 * dVar36;
            dVar34 = dVar36 * dVar38;
            dVar38 = dVar38 * dVar31;
            dVar27 = (dVar36 - dVar34) + (dVar38 - dVar34);
            dVar36 = (dVar31 - dVar38) - (dVar38 - dVar34);
            dVar31 = DAT_003f9608;
            if (uVar23 == 0) {
              dVar31 = (dVar37 * local_148[10] + dVar35 * local_148[8] + dVar33 * local_148[9] +
                       dVar32 * local_148[0xb]) * dVar36 +
                       (dVar35 * local_148[0] + dVar33 * local_148[1] + dVar37 * local_148[2] +
                       dVar32 * local_148[3]) * dVar34 +
                       (dVar37 * local_148[6] + dVar35 * local_148[4] + dVar33 * local_148[5] +
                       dVar32 * local_148[7]) * dVar27 +
                       (dVar37 * local_148[0xe] + dVar35 * local_148[0xc] + dVar33 * local_148[0xd]
                       + dVar32 * local_148[0xf]) * dVar38;
              dVar30 = DAT_003f9c68;
              if (0.0 <= dVar31) {
                dVar30 = DAT_003f9608;
              }
              if (dVar31 * dVar30 < DAT_003f9600) {
                dVar31 = dVar30 / DAT_003f9600;
              }
              else {
                dVar31 = DAT_003f9608 / dVar31;
              }
            }
            lVar18 = lVar18 + *(long *)(param_5 + 0x360);
            if (*(int *)(lVar18 + 4) != 0) {
              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =
                   (float)((dVar34 * (dVar37 * local_c8[2] +
                                      dVar35 * local_c8[0] + dVar33 * local_c8[1] +
                                     dVar32 * local_c8[3]) +
                            (dVar37 * local_c8[6] + dVar35 * local_c8[4] + dVar33 * local_c8[5] +
                            dVar32 * local_c8[7]) * dVar27 +
                            dVar36 * (dVar32 * local_c8[0xb] +
                                     dVar37 * local_c8[10] +
                                     dVar35 * local_c8[8] + dVar33 * local_c8[9]) +
                           (dVar32 * local_c8[0xf] +
                           dVar37 * local_c8[0xe] + dVar35 * local_c8[0xc] + dVar33 * local_c8[0xd])
                           * dVar38) * dVar31);
            }
          }
          lVar24 = lVar24 + 1;
          lVar13 = *(long *)(param_3 + 0x340);
          pfVar21 = pfVar21 + 1;
        } while (lVar24 < lVar13);
        uVar14 = 1;
      }
    }
    break;
  case 8:
    lVar25 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,1,1,param_8);
    uVar14 = 0;
    if (lVar25 != 0) {
      if (*(long *)(param_3 + 0x340) < 1) {
        uVar14 = 1;
      }
      else {
        lVar13 = 0;
        do {
          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;
          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&
              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&
             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {
            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =
                 *(undefined4 *)(lVar25 + lVar13 * 4);
          }
          lVar13 = lVar13 + 1;
        } while (lVar13 < *(long *)(param_3 + 0x340));
        uVar14 = 1;
      }
    }
    break;
  case 9:
    lVar13 = GetCacheViewVirtualPixels(param_4,lVar25,local_168,2,2,param_8);
    fVar12 = DAT_0041abe0;
    fVar2 = DAT_0041abdc;
    fVar9 = DAT_0041abd8;
    uVar11 = DAT_003f9c70;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (lVar13 != 0) {
      lVar24 = *(long *)(param_3 + 0x340);
      if (lVar24 < 1) {
        uVar14 = 1;
      }
      else {
        lVar20 = 0;
        do {
          lVar18 = *(long *)(param_3 + 0x360);
          lVar17 = (ulong)*(uint *)(lVar18 + lVar20 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar18 + 4 + lVar17);
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar17) != 0) && (uVar23 != 0)) {
            dVar34 = (double)*(float *)(lVar13 + lVar20 * 4);
            dVar32 = (double)*(float *)(lVar13 + (lVar20 + lVar24) * 4);
            lVar22 = lVar20 + lVar24 * 2;
            dVar33 = (double)*(float *)(lVar13 + lVar22 * 4);
            dVar31 = (double)*(float *)(lVar13 + (lVar22 + lVar24) * 4);
            dVar28 = dVar26;
            if ((uVar23 & 4) == 0) {
              local_160 = dVar26;
              dVar36 = DAT_003f9608;
              dVar35 = dVar26;
            }
            else {
              if (*(int *)(lVar18 + 0x44) == 0) {
                local_160 = dVar26;
                dVar35 = DAT_003f9608;
                fVar8 = _DAT_003fa400;
              }
              else {
                lVar22 = *(long *)(lVar18 + 0x48) * 4;
                local_160 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 4) * DAT_003f9c60;
                dVar28 = (double)*(float *)(lVar13 + *(long *)(lVar18 + 0x48) * 4) * DAT_003f9c60;
                dVar35 = (double)*(float *)(lVar13 + lVar22 + lVar24 * 8) * DAT_003f9c60;
                fVar8 = *(float *)(lVar13 + lVar22 + lVar24 * 0xc);
              }
              dVar36 = (double)fVar8 * DAT_003f9c60;
            }
            dVar37 = param_1 - (double)lVar25;
            dVar38 = param_2 - (double)local_168;
            lVar24 = *(long *)(param_3 + 0x360);
            lVar5 = *(long *)(lVar24 + 8);
            lVar6 = *(long *)(lVar24 + 0x18);
            lVar7 = *(long *)(lVar24 + 0x28);
            lVar22 = *(long *)(param_3 + 0x340);
            lVar24 = lVar13 + lVar22 * 0xc;
            lVar18 = lVar24 + lVar22 * -8;
            lVar22 = lVar18 + lVar22 * 4;
            if ((double)((ulong)((double)(fVar12 * *(float *)(lVar18 + lVar7 * 4) +
                                         fVar9 * *(float *)(lVar18 + lVar5 * 4) +
                                         fVar2 * *(float *)(lVar18 + lVar6 * 4)) -
                                (double)(fVar12 * *(float *)(lVar22 + lVar7 * 4) +
                                        fVar9 * *(float *)(lVar22 + lVar5 * 4) +
                                        fVar2 * *(float *)(lVar22 + lVar6 * 4))) & uVar11) <=
                (double)((ulong)((double)(fVar2 * *(float *)(lVar13 + lVar6 * 4) +
                                          fVar9 * *(float *)(lVar13 + lVar5 * 4) +
                                         fVar12 * *(float *)(lVar13 + lVar7 * 4)) -
                                (double)(fVar12 * *(float *)(lVar24 + lVar7 * 4) +
                                        fVar2 * *(float *)(lVar24 + lVar6 * 4) +
                                        fVar9 * *(float *)(lVar24 + lVar5 * 4))) & uVar11)) {
              dVar27 = DAT_003f9608 - dVar38;
              if (dVar27 < dVar37) {
                dVar37 = DAT_003f9608 - dVar37;
                dVar34 = (DAT_003f9608 - dVar37) - dVar27;
                dVar35 = dVar36 * dVar34 + dVar35 * dVar37 + local_160 * dVar27;
                dVar28 = DAT_003f9c68;
                if (0.0 <= dVar35) {
                  dVar28 = DAT_003f9608;
                }
                if (dVar28 * dVar35 < DAT_003f9600) {
                  dVar35 = dVar28 / DAT_003f9600;
                }
                else {
                  dVar35 = DAT_003f9608 / dVar35;
                }
                lVar17 = lVar17 + *(long *)(param_5 + 0x360);
                if (*(int *)(lVar17 + 4) != 0) {
                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                       (float)((dVar34 * dVar31 + dVar32 * dVar27 + dVar33 * dVar37) * dVar35);
                }
              }
              else {
                dVar31 = (DAT_003f9608 - dVar37) - dVar38;
                dVar35 = dVar28 * dVar31 + dVar35 * dVar38 + local_160 * dVar37;
                dVar28 = DAT_003f9c68;
                if (0.0 <= dVar35) {
                  dVar28 = DAT_003f9608;
                }
                if (dVar28 * dVar35 < DAT_003f9600) {
                  dVar35 = dVar28 / DAT_003f9600;
                }
                else {
                  dVar35 = DAT_003f9608 / dVar35;
                }
                lVar17 = lVar17 + *(long *)(param_5 + 0x360);
                if (*(int *)(lVar17 + 4) != 0) {
                  *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                       (float)(dVar35 * (dVar34 * dVar31 + dVar38 * dVar33 + dVar37 * dVar32));
                }
              }
            }
            else if (dVar38 < dVar37) {
              dVar37 = DAT_003f9608 - dVar37;
              dVar33 = (DAT_003f9608 - dVar37) - dVar38;
              dVar35 = dVar36 * dVar38 + dVar28 * dVar37 + local_160 * dVar33;
              dVar28 = DAT_003f9c68;
              if (0.0 <= dVar35) {
                dVar28 = DAT_003f9608;
              }
              if (dVar28 * dVar35 < DAT_003f9600) {
                dVar35 = dVar28 / DAT_003f9600;
              }
              else {
                dVar35 = DAT_003f9608 / dVar35;
              }
              lVar17 = lVar17 + *(long *)(param_5 + 0x360);
              if (*(int *)(lVar17 + 4) != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)((dVar33 * dVar32 + dVar37 * dVar34 + dVar38 * dVar31) * dVar35);
              }
            }
            else {
              dVar38 = DAT_003f9608 - dVar38;
              dVar32 = (DAT_003f9608 - dVar37) - dVar38;
              dVar35 = dVar36 * dVar37 + dVar28 * dVar38 + dVar35 * dVar32;
              dVar28 = DAT_003f9c68;
              if (0.0 <= dVar35) {
                dVar28 = DAT_003f9608;
              }
              if (dVar28 * dVar35 < DAT_003f9600) {
                dVar35 = dVar28 / DAT_003f9600;
              }
              else {
                dVar35 = DAT_003f9608 / dVar35;
              }
              lVar17 = lVar17 + *(long *)(param_5 + 0x360);
              if (*(int *)(lVar17 + 4) != 0) {
                *(float *)(param_7 + *(long *)(lVar17 + 8) * 4) =
                     (float)(dVar35 * (dVar32 * dVar33 + dVar34 * dVar38 + dVar37 * dVar31));
              }
            }
          }
          lVar20 = lVar20 + 1;
          lVar24 = *(long *)(param_3 + 0x340);
        } while (lVar20 < lVar24);
        uVar14 = 1;
      }
    }
    break;
  case 10:
    if (param_1 < DAT_004294e8) {
      local_178 = DAT_004294e8;
    }
    else if (DAT_004294f0 < param_1) {
      local_178 = DAT_004294f0;
    }
    dVar26 = floor(local_178 + DAT_003f9c28);
    if (param_2 < DAT_004294e8) {
      local_170 = DAT_004294e8;
    }
    else if (DAT_004294f0 < param_2) {
      local_170 = DAT_004294f0;
    }
    dVar28 = floor(local_170 + DAT_003f9c28);
    lVar25 = GetCacheViewVirtualPixels(param_4,(long)dVar26,(long)dVar28,1,1,param_8);
    uVar14 = 0;
    if (lVar25 != 0) {
      if (*(long *)(param_3 + 0x340) < 1) {
        uVar14 = 1;
      }
      else {
        lVar13 = 0;
        do {
          lVar24 = (ulong)*(uint *)(*(long *)(param_3 + 0x360) + lVar13 * 0x10) * 0x10;
          if (((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar24) != 0) &&
              (*(int *)(*(long *)(param_3 + 0x360) + 4 + lVar24) != 0)) &&
             (lVar24 = lVar24 + *(long *)(param_5 + 0x360), *(int *)(lVar24 + 4) != 0)) {
            *(undefined4 *)(param_7 + *(long *)(lVar24 + 8) * 4) =
                 *(undefined4 *)(lVar25 + lVar13 * 4);
          }
          lVar13 = lVar13 + 1;
        } while (lVar13 < *(long *)(param_3 + 0x340));
        uVar14 = 1;
      }
    }
    break;
  case 0xb:
    pfVar15 = (float *)GetCacheViewVirtualPixels(param_4,lVar25 + -1,local_168 + -1,4,4,param_8);
    dVar28 = DAT_0041d760;
    fVar9 = _DAT_003fa400;
    dVar26 = DAT_003f9608;
    uVar14 = 0;
    if (pfVar15 != (float *)0x0) {
      lVar13 = *(long *)(param_3 + 0x340);
      if (lVar13 < 1) {
        uVar14 = 1;
      }
      else {
        lVar24 = 0;
        pfVar21 = pfVar15;
        do {
          lVar20 = *(long *)(param_3 + 0x360);
          lVar18 = (ulong)*(uint *)(lVar20 + lVar24 * 0x10) * 0x10;
          uVar23 = *(uint *)(lVar20 + 4 + lVar18);
          if ((*(int *)(*(long *)(param_5 + 0x360) + 4 + lVar18) != 0) && (uVar23 != 0)) {
            uVar23 = uVar23 & 4;
            if (uVar23 == 0) {
              lVar20 = 0;
              pfVar19 = pfVar21;
              do {
                local_148[lVar20] = DAT_003f9608;
                local_c8[lVar20] = (double)*pfVar19;
                lVar20 = lVar20 + 1;
                pfVar19 = pfVar19 + lVar13;
              } while (lVar20 != 0x10);
            }
            else {
              iVar3 = *(int *)(lVar20 + 0x44);
              lVar22 = 0;
              lVar17 = 0;
              do {
                fVar2 = fVar9;
                if (iVar3 != 0) {
                  fVar2 = pfVar15[lVar22 + *(long *)(lVar20 + 0x48)];
                }
                local_148[lVar17] = (double)fVar2 * DAT_003f9c60;
                local_c8[lVar17] = (double)fVar2 * DAT_003f9c60 * (double)pfVar21[lVar22];
                lVar17 = lVar17 + 1;
                lVar22 = lVar22 + lVar13;
              } while (lVar17 != 0x10);
            }
            dVar32 = param_1 - (double)lVar25;
            dVar31 = dVar26 - dVar32;
            dVar33 = dVar32 * dVar28 * dVar32 * dVar32;
            dVar34 = dVar31 * dVar28 * dVar31 * dVar31;
            dVar35 = (dVar31 - dVar34) + (dVar33 - dVar34);
            dVar36 = (dVar32 - dVar33) - (dVar33 - dVar34);
            dVar32 = param_2 - (double)local_168;
            dVar37 = dVar26 - dVar32;
            dVar38 = dVar32 * dVar28 * dVar32 * dVar32;
            dVar31 = dVar37 * dVar28 * dVar37 * dVar37;
            dVar27 = (dVar37 - dVar31) + (dVar38 - dVar31);
            dVar37 = (dVar32 - dVar38) - (dVar38 - dVar31);
            dVar32 = DAT_003f9608;
            if (uVar23 == 0) {
              dVar32 = (dVar36 * local_148[6] + dVar34 * local_148[4] + dVar35 * local_148[5] +
                       dVar33 * local_148[7]) * dVar27 +
                       (dVar33 * local_148[3] +
                       dVar34 * local_148[0] + dVar35 * local_148[1] + dVar36 * local_148[2]) *
                       dVar31 + (dVar36 * local_148[10] +
                                 dVar34 * local_148[8] + dVar35 * local_148[9] +
                                dVar33 * local_148[0xb]) * dVar37 +
                       (dVar36 * local_148[0xe] + dVar34 * local_148[0xc] + dVar35 * local_148[0xd]
                       + dVar33 * local_148[0xf]) * dVar38;
              dVar30 = DAT_003f9c68;
              if (0.0 <= dVar32) {
                dVar30 = DAT_003f9608;
              }
              if (dVar32 * dVar30 < DAT_003f9600) {
                dVar32 = dVar30 / DAT_003f9600;
              }
              else {
                dVar32 = DAT_003f9608 / dVar32;
              }
            }
            lVar18 = lVar18 + *(long *)(param_5 + 0x360);
            if (*(int *)(lVar18 + 4) != 0) {
              *(float *)(param_7 + *(long *)(lVar18 + 8) * 4) =
                   (float)((dVar27 * (dVar36 * local_c8[6] +
                                      dVar34 * local_c8[4] + dVar35 * local_c8[5] +
                                     dVar33 * local_c8[7]) +
                            dVar31 * (dVar36 * local_c8[2] +
                                      dVar34 * local_c8[0] + dVar35 * local_c8[1] +
                                     dVar33 * local_c8[3]) +
                            dVar37 * (dVar33 * local_c8[0xb] +
                                     dVar36 * local_c8[10] +
                                     dVar34 * local_c8[8] + dVar35 * local_c8[9]) +
                           (dVar36 * local_c8[0xe] + dVar34 * local_c8[0xc] + dVar35 * local_c8[0xd]
                           + dVar33 * local_c8[0xf]) * dVar38) * dVar32);
            }
          }
          lVar24 = lVar24 + 1;
          lVar13 = *(long *)(param_3 + 0x340);
          pfVar21 = pfVar21 + 1;
        } while (lVar24 < lVar13);
        uVar14 = 1;
      }
    }
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar14;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

