
/* 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 */

void ImportBlackQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p
                       ,Quantum *q,ExceptionInfo *exception)

{
  PixelTrait PVar1;
  PixelChannelMap *pPVar2;
  double dVar3;
  ushort uVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  Quantum QVar8;
  double dVar9;
  double dVar10;
  uchar *puVar11;
  MagickSizeType MVar12;
  ulong uVar13;
  size_t sVar14;
  ulong uVar15;
  uint uVar16;
  ulong uVar17;
  long in_FS_OFFSET;
  float fVar18;
  float fVar19;
  double dVar20;
  Quantum QVar21;
  float pixel;
  long local_40;
  
  dVar10 = DAT_0042ffc8;
  dVar9 = DAT_0042ffc0;
  QVar8 = DAT_0042ffb4;
  dVar7 = DAT_00404930;
  dVar3 = DAT_00404920;
  fVar18 = _DAT_003fa400;
  dVar6 = DAT_003f9608;
  dVar5 = DAT_003f9600;
  dVar20 = DAT_003f95f8;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (image->colorspace != CMYKColorspace) {
    ThrowMagickException
              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,
               "ColorSeparatedImageRequired","`%s\'",image->filename);
    goto LAB_002953b8;
  }
  uVar13 = quantum_info->depth;
  if (uVar13 == 0x18) {
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if (0 < (long)number_pixels) {
        MVar12 = 0;
        do {
          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);
          if (image->channel_map[3].traits != UndefinedPixelTrait) {
            q[image->channel_map[3].offset] = pixel;
          }
          p = puVar11 + quantum_info->pad;
          q = q + image->number_channels;
          MVar12 = MVar12 + 1;
        } while (MVar12 != number_pixels);
      }
      goto LAB_002953b8;
    }
LAB_00295582:
    if (0 < (long)number_pixels) {
      pPVar2 = image->channel_map;
      PVar1 = pPVar2[3].traits;
      MVar12 = 0;
      do {
        if (quantum_info->endian == LSBEndian) {
          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;
        }
        else {
          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;
        }
        if (PVar1 != UndefinedPixelTrait) {
          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);
        }
        p = p + quantum_info->pad + 4;
        q = q + image->number_channels;
        MVar12 = MVar12 + 1;
      } while (MVar12 != number_pixels);
    }
    goto LAB_002953b8;
  }
  if (uVar13 < 0x19) {
    if (uVar13 == 8) {
      if (0 < (long)number_pixels) {
        pPVar2 = image->channel_map;
        PVar1 = pPVar2[3].traits;
        MVar12 = 0;
        do {
          if (PVar1 != UndefinedPixelTrait) {
            q[pPVar2[3].offset] = (float)((double)*p * dVar7);
          }
          p = p + quantum_info->pad + 1;
          q = q + image->number_channels;
          MVar12 = MVar12 + 1;
        } while (number_pixels != MVar12);
      }
      goto LAB_002953b8;
    }
    if (uVar13 == 0x10) {
      if (quantum_info->format == FloatingPointQuantumFormat) {
        if (0 < (long)number_pixels) {
          MVar12 = 0;
          do {
            if (quantum_info->endian == LSBEndian) {
              uVar4 = *(ushort *)p;
            }
            else {
              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));
            }
            fVar18 = HalfToSinglePrecision(uVar4);
            if (image->channel_map[3].traits != UndefinedPixelTrait) {
              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;
            }
            p = (uchar *)((long)p + quantum_info->pad + 2);
            q = q + image->number_channels;
            MVar12 = MVar12 + 1;
          } while (MVar12 != number_pixels);
        }
      }
      else if (0 < (long)number_pixels) {
        pPVar2 = image->channel_map;
        PVar1 = pPVar2[3].traits;
        MVar12 = 0;
        do {
          if (quantum_info->endian == LSBEndian) {
            uVar4 = *(ushort *)p;
          }
          else {
            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));
          }
          if (PVar1 != UndefinedPixelTrait) {
            q[pPVar2[3].offset] = (float)uVar4;
          }
          p = (uchar *)((long)p + quantum_info->pad + 2);
          q = q + image->number_channels;
          MVar12 = MVar12 + 1;
        } while (number_pixels != MVar12);
      }
      goto LAB_002953b8;
    }
LAB_0029592c:
    uVar17 = 0;
    if (uVar13 != 0) goto LAB_002953f9;
  }
  else {
    if (uVar13 == 0x20) {
      if (quantum_info->format == FloatingPointQuantumFormat) {
        if (0 < (long)number_pixels) {
          MVar12 = 0;
          do {
            if (quantum_info->endian == LSBEndian) {
              fVar18 = *(float *)p;
            }
            else {
              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |
                                                (ushort)*(byte *)((long)p + 1),
                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));
            }
            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;
            QVar21 = QVar8;
            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {
              QVar21 = (Quantum)dVar20;
            }
            if (image->channel_map[3].traits != UndefinedPixelTrait) {
              q[image->channel_map[3].offset] = QVar21;
            }
            p = (uchar *)((long)p + quantum_info->pad + 4);
            q = q + image->number_channels;
            MVar12 = MVar12 + 1;
          } while (MVar12 != number_pixels);
        }
        goto LAB_002953b8;
      }
      goto LAB_00295582;
    }
    if (uVar13 != 0x40) goto LAB_0029592c;
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if (0 < (long)number_pixels) {
        MVar12 = 0;
        do {
          if (quantum_info->endian == LSBEndian) {
            dVar20 = *(double *)p;
          }
          else {
            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>
                                                      0x10) |
                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>
                                                      0x10) |
                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>
                                                      0x10) |
                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>
                                                      0x10) | (uint6)*(byte *)((long)p + 5),
                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));
          }
          if (image->channel_map[3].traits != UndefinedPixelTrait) {
            q[image->channel_map[3].offset] =
                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));
          }
          p = (uchar *)((long)p + quantum_info->pad + 8);
          q = q + image->number_channels;
          MVar12 = MVar12 + 1;
        } while (MVar12 != number_pixels);
      }
      goto LAB_002953b8;
    }
LAB_002953f9:
    if (0x40 < uVar13) {
      uVar13 = 0;
    }
    uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;
  }
  if (0 < (long)number_pixels) {
    MVar12 = 0;
    do {
      sVar14 = quantum_info->depth;
      if ((long)sVar14 < 1) {
        uVar16 = 0;
LAB_00295a2e:
        dVar3 = DAT_003fa390;
        if (dVar5 <= (double)uVar17) {
          dVar3 = dVar6 / (double)uVar17;
        }
        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);
      }
      else {
        uVar13 = (quantum_info->state).bits;
        uVar16 = 0;
        do {
          if (uVar13 == 0) {
            (quantum_info->state).pixel = (uint)*p;
            p = p + 1;
            uVar13 = 8;
          }
          uVar15 = sVar14;
          if (uVar13 <= sVar14) {
            uVar15 = uVar13;
          }
          sVar14 = sVar14 - uVar15;
          uVar13 = uVar13 - uVar15;
          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |
                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &
                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));
        } while (0 < (long)sVar14);
        (quantum_info->state).bits = uVar13;
        fVar19 = fVar18;
        if (uVar16 <= uVar17) goto LAB_00295a2e;
      }
      if (image->channel_map[3].traits != UndefinedPixelTrait) {
        q[image->channel_map[3].offset] = fVar19;
      }
      p = p + quantum_info->pad;
      q = q + image->number_channels;
      MVar12 = MVar12 + 1;
    } while (MVar12 != number_pixels);
  }
LAB_002953b8:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



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

void FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,
                 undefined8 param_6)

{
  int iVar1;
  double dVar2;
  ushort uVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  long lVar9;
  ulong uVar10;
  ulong uVar11;
  ulong uVar12;
  uint uVar13;
  long lVar14;
  ulong uVar15;
  long in_FS_OFFSET;
  float fVar16;
  float fVar17;
  double dVar18;
  undefined4 local_44;
  long local_40;
  
  dVar8 = DAT_0042ffc8;
  dVar7 = DAT_0042ffc0;
  fVar17 = DAT_0042ffb4;
  dVar6 = DAT_00404930;
  dVar2 = DAT_00404920;
  fVar16 = _DAT_003fa400;
  dVar5 = DAT_003f9608;
  dVar4 = DAT_003f9600;
  dVar18 = DAT_003f95f8;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (*(int *)(param_1 + 4) != 2) {
    ThrowMagickException
              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,
               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);
    goto LAB_002953b8;
  }
  uVar11 = *param_2;
  if (uVar11 == 0x18) {
    if ((int)param_2[2] == 1) {
      if (0 < param_3) {
        lVar14 = 0;
        do {
          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;
          }
          param_4 = (double *)(lVar9 + param_2[6]);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar14 = lVar14 + 1;
        } while (lVar14 != param_3);
      }
      goto LAB_002953b8;
    }
LAB_00295582:
    if (0 < param_3) {
      lVar14 = *(long *)(param_1 + 0x360);
      iVar1 = *(int *)(lVar14 + 0x34);
      lVar9 = 0;
      do {
        if ((int)param_2[0xc] == 1) {
          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |
                   (uint)*(byte *)((long)param_4 + 1) << 8 |
                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;
        }
        else {
          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |
                   (uint)*(byte *)((long)param_4 + 3) |
                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;
        }
        if (iVar1 != 0) {
          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);
        }
        param_4 = (double *)((long)param_4 + param_2[6] + 4);
        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
        lVar9 = lVar9 + 1;
      } while (lVar9 != param_3);
    }
    goto LAB_002953b8;
  }
  if (uVar11 < 0x19) {
    if (uVar11 == 8) {
      if (0 < param_3) {
        lVar14 = *(long *)(param_1 + 0x360);
        iVar1 = *(int *)(lVar14 + 0x34);
        lVar9 = 0;
        do {
          if (iVar1 != 0) {
            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =
                 (float)((double)*(byte *)param_4 * dVar6);
          }
          param_4 = (double *)((long)param_4 + param_2[6] + 1);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar9 = lVar9 + 1;
        } while (param_3 != lVar9);
      }
      goto LAB_002953b8;
    }
    if (uVar11 == 0x10) {
      if ((int)param_2[2] == 1) {
        if (0 < param_3) {
          lVar14 = 0;
          do {
            if ((int)param_2[0xc] == 1) {
              uVar3 = *(ushort *)param_4;
            }
            else {
              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));
            }
            fVar16 = (float)FUN_0028db24(uVar3);
            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =
                   fVar16 * _DAT_003fa400;
            }
            param_4 = (double *)((long)param_4 + param_2[6] + 2);
            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
            lVar14 = lVar14 + 1;
          } while (lVar14 != param_3);
        }
      }
      else if (0 < param_3) {
        lVar14 = *(long *)(param_1 + 0x360);
        iVar1 = *(int *)(lVar14 + 0x34);
        lVar9 = 0;
        do {
          if ((int)param_2[0xc] == 1) {
            uVar3 = *(ushort *)param_4;
          }
          else {
            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));
          }
          if (iVar1 != 0) {
            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;
          }
          param_4 = (double *)((long)param_4 + param_2[6] + 2);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar9 = lVar9 + 1;
        } while (param_3 != lVar9);
      }
      goto LAB_002953b8;
    }
LAB_0029592c:
    uVar15 = 0;
    if (uVar11 != 0) goto LAB_002953f9;
  }
  else {
    if (uVar11 == 0x20) {
      if ((int)param_2[2] == 1) {
        if (0 < param_3) {
          lVar14 = 0;
          do {
            if ((int)param_2[0xc] == 1) {
              fVar16 = *(float *)param_4;
            }
            else {
              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)
                                                | (ushort)*(byte *)((long)param_4 + 1),
                                                *(byte *)((long)param_4 + 2)),
                                       *(byte *)((long)param_4 + 3));
            }
            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];
            fVar16 = fVar17;
            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {
              fVar16 = (float)dVar18;
            }
            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;
            }
            param_4 = (double *)((long)param_4 + param_2[6] + 4);
            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
            lVar14 = lVar14 + 1;
          } while (lVar14 != param_3);
        }
        goto LAB_002953b8;
      }
      goto LAB_00295582;
    }
    if (uVar11 != 0x40) goto LAB_0029592c;
    if ((int)param_2[2] == 1) {
      if (0 < param_3) {
        lVar14 = 0;
        do {
          if ((int)param_2[0xc] == 1) {
            dVar18 = *param_4;
          }
          else {
            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)
                                                      >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)
                                                      >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)
                                                      >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)
                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)
                                               ,*(byte *)((long)param_4 + 6)),
                                      *(byte *)((long)param_4 + 7));
          }
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =
                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));
          }
          param_4 = (double *)((long)param_4 + param_2[6] + 8);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar14 = lVar14 + 1;
        } while (lVar14 != param_3);
      }
      goto LAB_002953b8;
    }
LAB_002953f9:
    if (0x40 < uVar11) {
      uVar11 = 0;
    }
    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;
  }
  if (0 < param_3) {
    lVar14 = 0;
    do {
      uVar11 = *param_2;
      if ((long)uVar11 < 1) {
        uVar13 = 0;
LAB_00295a2e:
        dVar2 = DAT_003fa390;
        if (dVar4 <= (double)uVar15) {
          dVar2 = dVar5 / (double)uVar15;
        }
        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);
      }
      else {
        uVar10 = param_2[0xf];
        uVar13 = 0;
        do {
          if (uVar10 == 0) {
            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;
            param_4 = (double *)((long)param_4 + 1);
            uVar10 = 8;
          }
          uVar12 = uVar11;
          if (uVar10 <= uVar11) {
            uVar12 = uVar10;
          }
          uVar11 = uVar11 - uVar12;
          uVar10 = uVar10 - uVar12;
          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |
                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &
                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));
        } while (0 < (long)uVar11);
        param_2[0xf] = uVar10;
        fVar17 = fVar16;
        if (uVar13 <= uVar15) goto LAB_00295a2e;
      }
      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;
      }
      param_4 = (double *)((long)param_4 + param_2[6]);
      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
      lVar14 = lVar14 + 1;
    } while (lVar14 != param_3);
  }
LAB_002953b8:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV R12,RDI
MOV RBX,RSI
MOV RSI,RCX
MOV RCX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RCX
XOR ECX,ECX
CMP dword ptr [RDI + 0x4],0x2
JNZ 0x00295376
MOV RBP,R8
MOV RCX,qword ptr [RBX]
CMP RCX,0x18
JZ 0x0029557c
CMP RCX,0x18
JA 0x002953db
CMP RCX,0x8
JZ 0x0029541b
CMP RCX,0x10
JNZ 0x0029592c
CMP dword ptr [RBX + 0x10],0x1
JZ 0x00295488
MOV RDI,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV R9,qword ptr [R12 + 0x360]
MOV R8D,dword ptr [R9 + 0x34]
MOV ECX,0x0
JMP 0x00295546
MOV RDI,R9
ADD R12,0x3f8
PUSH R12
LEA RAX,[0x3fcd40]
PUSH RAX
LEA R9,[0x41c717]
MOV R8D,0x1d1
MOV ECX,0x528
LEA RDX,[0x42fee0]
LEA RSI,[0x42f300]
MOV EAX,0x0
CALL 0x0014cb70
ADD RSP,0x10
MOV RAX,qword ptr [RSP + 0x18]
XOR RAX,qword ptr FS:[0x28]
JNZ 0x00295a8f
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP RCX,0x20
JZ 0x00295611
CMP RCX,0x40
JNZ 0x0029592c
CMP dword ptr [RBX + 0x10],0x1
JZ 0x002957ae
CMP RCX,0x40
MOV EAX,0x40
CMOVA RCX,RAX
SUB ECX,0x1
MOV R13D,0x2
SHL R13,CL
SUB R13,0x1
JMP 0x0029593b
MOV RCX,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV R9,qword ptr [RDI + 0x360]
MOV EDI,dword ptr [R9 + 0x34]
MOV EAX,0x0
MOVSD XMM1,qword ptr [0x00404930]
JMP 0x00295460
MOV RDX,qword ptr [RBX + 0x30]
LEA RSI,[RSI + RDX*0x1 + 0x1]
MOV RDX,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RDX*0x4]
ADD RAX,0x1
CMP RCX,RAX
JZ 0x002953b8
TEST EDI,EDI
JZ 0x0029543d
MOV R8,qword ptr [R9 + 0x38]
MOVZX EDX,byte ptr [RSI]
PXOR XMM0,XMM0
CVTSI2SD XMM0,EDX
MULSD XMM0,XMM1
PXOR XMM7,XMM7
CVTSD2SS XMM7,XMM0
MOVSS dword ptr [RBP + R8*0x4],XMM7
JMP 0x0029543d
MOV R15,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV R13D,0x0
JMP 0x002954cf
MOVZX EAX,byte ptr [RSI]
LEA R14,[RSI + 0x2]
MOVZX EDI,byte ptr [RSI + 0x1]
SHL EDI,0x8
OR EDI,EAX
JMP 0x002954e7
MOV RSI,R14
ADD RSI,qword ptr [RBX + 0x30]
MOV RAX,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD R13,0x1
CMP R13,R15
JZ 0x002953b8
CMP dword ptr [RBX + 0x60],0x1
JZ 0x0029549c
MOVZX EDI,byte ptr [RSI]
MOV EAX,EDI
SHL EAX,0x8
LEA R14,[RSI + 0x2]
MOVZX EDI,byte ptr [RSI + 0x1]
OR EDI,EAX
MOVZX EDI,DI
CALL 0x0028db24
MOV RAX,qword ptr [R12 + 0x360]
CMP dword ptr [RAX + 0x34],0x0
JZ 0x002954ae
MOV RAX,qword ptr [RAX + 0x38]
MULSS XMM0,dword ptr [0x003fa400]
MOVSS dword ptr [RBP + RAX*0x4],XMM0
JMP 0x002954ae
MOVZX R10D,byte ptr [RSI]
LEA RDX,[RSI + 0x2]
MOVZX EAX,byte ptr [RSI + 0x1]
SHL EAX,0x8
OR EAX,R10D
JMP 0x00295560
MOV RSI,RDX
ADD RSI,qword ptr [RBX + 0x30]
MOV RAX,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RCX,0x1
CMP RDI,RCX
JZ 0x002953b8
CMP dword ptr [RBX + 0x60],0x1
JZ 0x00295511
MOVZX EAX,byte ptr [RSI]
SHL EAX,0x8
MOV R10D,EAX
LEA RDX,[RSI + 0x2]
MOVZX EAX,byte ptr [RSI + 0x1]
OR EAX,R10D
TEST R8D,R8D
JZ 0x00295525
MOV RSI,qword ptr [R9 + 0x38]
MOVZX EAX,AX
PXOR XMM0,XMM0
CVTSI2SS XMM0,EAX
MOVSS dword ptr [RBP + RSI*0x4],XMM0
JMP 0x00295525
CMP dword ptr [RBX + 0x10],0x1
JZ 0x002955ac
MOV R9,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV R11,qword ptr [R12 + 0x360]
MOV R10D,dword ptr [R11 + 0x34]
MOV EDI,0x0
MOVSD XMM1,qword ptr [0x00404920]
JMP 0x0029575e
MOV R14,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV R13D,0x0
LEA R15,[RSP + 0x14]
JMP 0x002955e6
ADD RAX,qword ptr [RBX + 0x30]
MOV RSI,RAX
MOV RAX,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD R13,0x1
CMP R13,R14
JZ 0x002953b8
MOV RDX,R15
MOV RDI,RBX
CALL 0x0028ddb2
MOV RDX,qword ptr [R12 + 0x360]
CMP dword ptr [RDX + 0x34],0x0
JZ 0x002955c5
MOV RDX,qword ptr [RDX + 0x38]
MOVSS XMM0,dword ptr [RSP + 0x14]
MOVSS dword ptr [RBP + RDX*0x4],XMM0
JMP 0x002955c5
CMP dword ptr [RBX + 0x10],0x1
JNZ 0x00295582
MOV RCX,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV EDX,0x0
MOVSD XMM3,qword ptr [0x0042ffc0]
MOVSS XMM2,dword ptr [0x0042ffb4]
MOVSD XMM4,qword ptr [0x0042ffc8]
MOV R14,RCX
MOV EAX,R10D
JMP 0x002956ab
MOV AL,byte ptr [RSI]
MOVZX ECX,byte ptr [RSI + 0x1]
MOV AH,CL
MOVZX R8D,byte ptr [RSI + 0x2]
SHL R8D,0x10
MOVZX EAX,AX
LEA RDI,[RSI + 0x4]
MOVZX ESI,byte ptr [RSI + 0x3]
SHL ESI,0x18
OR EAX,R8D
OR EAX,ESI
JMP 0x002956d5
MOV RSI,qword ptr [R12 + 0x360]
CMP dword ptr [RSI + 0x34],0x0
JZ 0x0029568a
MOV RSI,qword ptr [RSI + 0x38]
MOVSS dword ptr [RBP + RSI*0x4],XMM1
MOV RSI,RDI
ADD RSI,qword ptr [RBX + 0x30]
MOV RDI,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RDI*0x4]
ADD RDX,0x1
CMP RDX,R14
JZ 0x002953b8
CMP dword ptr [RBX + 0x60],0x1
JZ 0x0029564c
MOVZX R8D,byte ptr [RSI]
SHL R8D,0x18
MOVZX EAX,AX
MOVZX EDI,byte ptr [RSI + 0x1]
SHL EDI,0x10
OR EAX,R8D
OR EAX,EDI
MOVZX ECX,byte ptr [RSI + 0x2]
MOV AH,CL
LEA RDI,[RSI + 0x4]
MOV AL,byte ptr [RSI + 0x3]
MOVD XMM7,EAX
PXOR XMM0,XMM0
CVTSS2SD XMM0,XMM7
SUBSD XMM0,qword ptr [RBX + 0x18]
MULSD XMM0,qword ptr [RBX + 0x28]
MOVAPS XMM1,XMM2
UCOMISD XMM3,XMM0
JA 0x00295672
MOVSS XMM1,dword ptr [0x0042ffb8]
UCOMISD XMM0,XMM4
JA 0x00295672
PXOR XMM1,XMM1
CVTSD2SS XMM1,XMM0
JMP 0x00295672
MOVZX EDX,byte ptr [RSI]
MOVZX EAX,byte ptr [RSI + 0x1]
SHL EAX,0x8
MOVZX ECX,byte ptr [RSI + 0x2]
SHL ECX,0x10
OR EAX,ECX
OR EAX,EDX
MOV ECX,EAX
LEA RDX,[RSI + 0x4]
MOVZX EAX,byte ptr [RSI + 0x3]
SHL EAX,0x18
OR EAX,ECX
JMP 0x00295786
MOV RSI,RDX
ADD RSI,qword ptr [RBX + 0x30]
MOV RAX,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RDI,0x1
CMP RDI,R9
JZ 0x002953b8
CMP dword ptr [RBX + 0x60],0x1
JZ 0x00295717
MOVZX ECX,byte ptr [RSI]
SHL ECX,0x18
LEA RDX,[RSI + 0x4]
MOVZX EAX,byte ptr [RSI + 0x1]
SHL EAX,0x10
OR EAX,ECX
MOVZX ECX,byte ptr [RSI + 0x3]
OR ECX,EAX
MOVZX EAX,byte ptr [RSI + 0x2]
SHL EAX,0x8
OR EAX,ECX
TEST R10D,R10D
JZ 0x0029573d
MOV RCX,qword ptr [R11 + 0x38]
MOV EAX,EAX
PXOR XMM0,XMM0
CVTSI2SD XMM0,RAX
DIVSD XMM0,XMM1
PXOR XMM5,XMM5
CVTSD2SS XMM5,XMM0
MOVSS dword ptr [RBP + RCX*0x4],XMM5
JMP 0x0029573d
MOV RDI,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV ECX,0x0
MOV R13,0xffffffffffffff
MOV R11,-0xff000000000001
MOV R10,-0xff0000000001
MOV R9,-0xff00000001
MOV R8,-0xff000001
JMP 0x0029587f
MOV AL,byte ptr [RSI]
MOVZX EDX,byte ptr [RSI + 0x1]
MOV AH,DL
MOVZX EDX,byte ptr [RSI + 0x2]
SHL RDX,0x10
AND RAX,-0xff0001
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x3]
SHL RDX,0x18
AND RAX,R8
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x4]
SHL RDX,0x20
AND RAX,R9
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x5]
SHL RDX,0x28
AND RAX,R10
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x6]
SHL RDX,0x30
AND RAX,R11
OR RAX,RDX
LEA RDX,[RSI + 0x8]
MOVZX ESI,byte ptr [RSI + 0x7]
SHL RSI,0x38
AND RAX,R13
OR RAX,RSI
JMP 0x002958ec
MOV RSI,RDX
ADD RSI,qword ptr [RBX + 0x30]
MOV RDX,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RDX*0x4]
ADD RCX,0x1
CMP RCX,RDI
JZ 0x002953b8
CMP dword ptr [RBX + 0x60],0x1
JZ 0x002957f6
MOVZX EDX,byte ptr [RSI]
SHL RDX,0x38
AND RAX,R13
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x1]
SHL RDX,0x30
AND RAX,R11
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x2]
SHL RDX,0x28
AND RAX,R10
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x3]
SHL RDX,0x20
AND RAX,R9
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x4]
SHL RDX,0x18
AND RAX,R8
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x5]
SHL RDX,0x10
AND RAX,-0xff0001
OR RAX,RDX
MOVZX EDX,byte ptr [RSI + 0x6]
MOV AH,DL
LEA RDX,[RSI + 0x8]
MOV AL,byte ptr [RSI + 0x7]
MOVQ XMM1,RAX
MOVSD XMM2,qword ptr [RBX + 0x18]
MOVSD XMM0,qword ptr [RBX + 0x28]
MOV RSI,qword ptr [R12 + 0x360]
CMP dword ptr [RSI + 0x34],0x0
JZ 0x0029585e
MOV RSI,qword ptr [RSI + 0x38]
SUBSD XMM1,XMM2
MULSD XMM0,XMM1
PXOR XMM6,XMM6
CVTSD2SS XMM6,XMM0
MOVSS dword ptr [RBP + RSI*0x4],XMM6
JMP 0x0029585e
MOV R13D,0x0
TEST RCX,RCX
JNZ 0x002953f9
MOV R14,RDX
TEST RDX,RDX
JLE 0x002953b8
MOV R11D,0x0
MOVSD XMM4,qword ptr [0x003f9600]
MOVSD XMM3,qword ptr [0x003f95f8]
MOVSD XMM5,qword ptr [0x003f9608]
MOV RAX,R13
AND EAX,0x1
MOV qword ptr [RSP + 0x8],RAX
MOV R10,-0x1
MOVSS XMM2,dword ptr [0x003fa400]
JMP 0x00295a14
CMP RDX,RDI
MOV R8,RDI
CMOVBE R8,RDX
SUB RDI,R8
SUB RDX,R8
MOV EAX,dword ptr [RBX + 0x70]
MOV ECX,EDX
SHR EAX,CL
MOV R15,R10
MOV ECX,R8D
SHL R15,CL
MOV RCX,R15
NOT ECX
AND EAX,ECX
MOV ECX,R8D
SHL R9D,CL
OR R9D,EAX
TEST RDI,RDI
JLE 0x002959cf
TEST RDX,RDX
JNZ 0x00295984
MOVZX EAX,byte ptr [RSI]
MOV dword ptr [RBX + 0x70],EAX
LEA RSI,[RSI + 0x1]
MOV EDX,0x8
JMP 0x00295984
MOV qword ptr [RBX + 0x78],RDX
MOV EAX,R9D
MOVAPS XMM0,XMM2
CMP RAX,R13
JBE 0x00295a2e
MOV RAX,qword ptr [R12 + 0x360]
CMP dword ptr [RAX + 0x34],0x0
JZ 0x002959f6
MOV RAX,qword ptr [RAX + 0x38]
MOVSS dword ptr [RBP + RAX*0x4],XMM0
ADD RSI,qword ptr [RBX + 0x30]
MOV RAX,qword ptr [R12 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD R11,0x1
CMP R11,R14
JZ 0x002953b8
MOV RDI,qword ptr [RBX]
TEST RDI,RDI
JLE 0x00295a28
MOV RDX,qword ptr [RBX + 0x78]
MOV R9D,0x0
JMP 0x002959b9
MOV R9D,0x0
MOV R9D,R9D
PXOR XMM0,XMM0
CVTSI2SD XMM0,R9
TEST R13,R13
JS 0x00295a6b
PXOR XMM1,XMM1
CVTSI2SD XMM1,R13
UCOMISD XMM1,XMM4
JC 0x00295a85
MOVAPD XMM6,XMM5
DIVSD XMM6,XMM1
MOVAPD XMM1,XMM6
MULSD XMM0,XMM1
MULSD XMM0,XMM3
CVTSD2SS XMM0,XMM0
JMP 0x002959de
MOV RAX,R13
SHR RAX,0x1
OR RAX,qword ptr [RSP + 0x8]
PXOR XMM1,XMM1
CVTSI2SD XMM1,RAX
ADDSD XMM1,XMM1
JMP 0x00295a48
MOVSD XMM1,qword ptr [0x003fa390]
JMP 0x00295a5a
CALL 0x0014c5c0
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)\n\n{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment (function_definition "void FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)\n\n{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)" identifier (parameter_list "(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "double *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "float fVar16;" primitive_type identifier ;) (declaration "float fVar17;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "dVar8 = DAT_0042ffc8;" (assignment_expression "dVar8 = DAT_0042ffc8" identifier = identifier) ;) (expression_statement "dVar7 = DAT_0042ffc0;" (assignment_expression "dVar7 = DAT_0042ffc0" identifier = identifier) ;) (expression_statement "fVar17 = DAT_0042ffb4;" (assignment_expression "fVar17 = DAT_0042ffb4" identifier = identifier) ;) (expression_statement "dVar6 = DAT_00404930;" (assignment_expression "dVar6 = DAT_00404930" identifier = identifier) ;) (expression_statement "dVar2 = DAT_00404920;" (assignment_expression "dVar2 = DAT_00404920" identifier = identifier) ;) (expression_statement "fVar16 = _DAT_003fa400;" (assignment_expression "fVar16 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar5 = DAT_003f9608;" (assignment_expression "dVar5 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar4 = DAT_003f9600;" (assignment_expression "dVar4 = DAT_003f9600" identifier = identifier) ;) (expression_statement "dVar18 = DAT_003f95f8;" (assignment_expression "dVar18 = DAT_003f95f8" identifier = 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 (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 2)" ( (binary_expression "*(int *)(param_1 + 4) != 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }" { (expression_statement "ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);" (call_expression "ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8)" identifier (argument_list "(param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8)" ( identifier , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , (string_literal ""ImportBlackQuantum"" " string_content ") , number_literal , number_literal , (string_literal ""ColorSeparatedImageRequired"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_1 + 0x3f8" identifier + number_literal) ))) ;) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }" if (parenthesized_expression "(uVar11 == 0x18)" ( (binary_expression "uVar11 == 0x18" identifier == number_literal) )) (compound_statement "{\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }" { (if_statement "if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);" do (compound_statement "{\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        }" { (expression_statement "lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);" (assignment_expression "lVar9 = FUN_0028ddb2(param_2,param_4,&local_44)" identifier = (call_expression "FUN_0028ddb2(param_2,param_4,&local_44)" identifier (argument_list "(param_2,param_4,&local_44)" ( identifier , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }" { (expression_statement "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;" (assignment_expression "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44" (pointer_expression "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "param_4 = (double *)(lVar9 + param_2[6]);" (assignment_expression "param_4 = (double *)(lVar9 + param_2[6])" identifier = (cast_expression "(double *)(lVar9 + param_2[6])" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + param_2[6])" ( (binary_expression "lVar9 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" statement_identifier : (if_statement "if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" { (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" identifier = (pointer_expression "*(int *)(lVar14 + 0x34)" * (cast_expression "(int *)(lVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x34)" ( (binary_expression "lVar14 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);" do (compound_statement "{\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      }" { (if_statement "if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }" { (expression_statement "uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;" (assignment_expression "uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4" identifier = (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18" (binary_expression "(uint)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "(uint)*(byte *)((long)param_4 + 1) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) }) (else_clause "else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" else (compound_statement "{\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" { (expression_statement "uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;" (assignment_expression "uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18" identifier = (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3)" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "(uint)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) | (binary_expression "(uint)*(byte *)((long)param_4 + 1) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)param_4 << 0x18" (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal))) ;) }))) (if_statement "if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }" { (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2)" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" identifier + (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" * (cast_expression "(long *)(lVar14 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((double)uVar13 / dVar2)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)uVar13 / dVar2)" ( (binary_expression "(double)uVar13 / dVar2" (cast_expression "(double)uVar13" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )))) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 4);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 4)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 4)" ( (binary_expression "(long)param_4 + param_2[6] + 4" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 != param_3)" ( (binary_expression "lVar9 != param_3" identifier != identifier) )) ;) }))) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (if_statement "if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" if (parenthesized_expression "(uVar11 < 0x19)" ( (binary_expression "uVar11 < 0x19" identifier < number_literal) )) (compound_statement "{\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }" { (if_statement "if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(uVar11 == 8)" ( (binary_expression "uVar11 == 8" identifier == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" { (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" identifier = (pointer_expression "*(int *)(lVar14 + 0x34)" * (cast_expression "(int *)(lVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x34)" ( (binary_expression "lVar14 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);" do (compound_statement "{\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        }" { (if_statement "if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }" { (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6)" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" identifier + (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" * (cast_expression "(long *)(lVar14 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((double)*(byte *)param_4 * dVar6)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)*(byte *)param_4 * dVar6)" ( (binary_expression "(double)*(byte *)param_4 * dVar6" (cast_expression "(double)*(byte *)param_4" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(byte *)param_4" * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) * identifier) )))) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 1);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 1)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 1)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 1)" ( (binary_expression "(long)param_4 + param_2[6] + 1" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != lVar9)" ( (binary_expression "param_3 != lVar9" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(uVar11 == 0x10)" ( (binary_expression "uVar11 == 0x10" identifier == number_literal) )) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }" { (if_statement "if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);" do (compound_statement "{\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          }" { (if_statement "if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              uVar3 = *(ushort *)param_4;\n            }" { (expression_statement "uVar3 = *(ushort *)param_4;" (assignment_expression "uVar3 = *(ushort *)param_4" identifier = (pointer_expression "*(ushort *)param_4" * (cast_expression "(ushort *)param_4" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" else (compound_statement "{\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" { (expression_statement "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));" (assignment_expression "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier = (call_expression "CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier (argument_list "(*(byte *)param_4,*(byte *)((long)param_4 + 1))" ( (pointer_expression "*(byte *)param_4" * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(byte *)((long)param_4 + 1)" * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (expression_statement "fVar16 = (float)FUN_0028db24(uVar3);" (assignment_expression "fVar16 = (float)FUN_0028db24(uVar3)" identifier = (cast_expression "(float)FUN_0028db24(uVar3)" ( (type_descriptor "float" primitive_type) ) (call_expression "FUN_0028db24(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))))) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (binary_expression "fVar16 * _DAT_003fa400" identifier * identifier)) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 2);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 2)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 2)" ( (binary_expression "(long)param_4 + param_2[6] + 2" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) }) (else_clause "else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" else (if_statement "if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" { (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" identifier = (pointer_expression "*(int *)(lVar14 + 0x34)" * (cast_expression "(int *)(lVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x34)" ( (binary_expression "lVar14 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);" do (compound_statement "{\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        }" { (if_statement "if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            uVar3 = *(ushort *)param_4;\n          }" { (expression_statement "uVar3 = *(ushort *)param_4;" (assignment_expression "uVar3 = *(ushort *)param_4" identifier = (pointer_expression "*(ushort *)param_4" * (cast_expression "(ushort *)param_4" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" else (compound_statement "{\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" { (expression_statement "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));" (assignment_expression "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier = (call_expression "CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier (argument_list "(*(byte *)param_4,*(byte *)((long)param_4 + 1))" ( (pointer_expression "*(byte *)param_4" * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(byte *)((long)param_4 + 1)" * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (if_statement "if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }" { (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" identifier + (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" * (cast_expression "(long *)(lVar14 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)uVar3" ( (type_descriptor "float" primitive_type) ) identifier)) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 2);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 2)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 2)" ( (binary_expression "(long)param_4 + param_2[6] + 2" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != lVar9)" ( (binary_expression "param_3 != lVar9" identifier != identifier) )) ;) })))) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_0029592c:\n    uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) (if_statement "if (uVar11 != 0) goto LAB_002953f9;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002953f9;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" else (compound_statement "{\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" { (if_statement "if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" if (parenthesized_expression "(uVar11 == 0x20)" ( (binary_expression "uVar11 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" { (if_statement "if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }" { (if_statement "if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);" do (compound_statement "{\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          }" { (if_statement "if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              fVar16 = *(float *)param_4;\n            }" { (expression_statement "fVar16 = *(float *)param_4;" (assignment_expression "fVar16 = *(float *)param_4" identifier = (pointer_expression "*(float *)param_4" * (cast_expression "(float *)param_4" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" else (compound_statement "{\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" { (expression_statement "fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));" (assignment_expression "fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" identifier (argument_list "(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" ( (call_expression "CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2))" identifier (argument_list "((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2))" ( (binary_expression "(ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1)" (call_expression "(ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((ulong)*(byte *)param_4 << 0x18) >> 0x10)" ( (binary_expression "((ulong)*(byte *)param_4 << 0x18) >> 0x10" (parenthesized_expression "((ulong)*(byte *)param_4 << 0x18)" ( (binary_expression "(ulong)*(byte *)param_4 << 0x18" (binary_expression "(ulong)*(byte *)param_4" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((long)param_4 + 2)" * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((long)param_4 + 3)" * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];" (assignment_expression "dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5]" identifier = (binary_expression "((double)fVar16 - (double)param_2[3]) * (double)param_2[5]" (parenthesized_expression "((double)fVar16 - (double)param_2[3])" ( (binary_expression "(double)fVar16 - (double)param_2[3]" (cast_expression "(double)fVar16" ( (type_descriptor "double" primitive_type) ) identifier) - (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) * (cast_expression "(double)param_2[5]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[5]" identifier [ number_literal ])))) ;) (expression_statement "fVar16 = fVar17;" (assignment_expression "fVar16 = fVar17" identifier = identifier) ;) (if_statement "if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }" if (parenthesized_expression "((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8))" ( (binary_expression "(dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)" (parenthesized_expression "(dVar7 <= dVar18)" ( (binary_expression "dVar7 <= dVar18" identifier <= identifier) )) && (parenthesized_expression "(fVar16 = DAT_0042ffb8, dVar18 <= dVar8)" ( (comma_expression "fVar16 = DAT_0042ffb8, dVar18 <= dVar8" (assignment_expression "fVar16 = DAT_0042ffb8" identifier = identifier) , (binary_expression "dVar18 <= dVar8" identifier <= identifier)) ))) )) (compound_statement "{\n              fVar16 = (float)dVar18;\n            }" { (expression_statement "fVar16 = (float)dVar18;" (assignment_expression "fVar16 = (float)dVar18" identifier = (cast_expression "(float)dVar18" ( (type_descriptor "float" primitive_type) ) identifier)) ;) })) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 4);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 4)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 4)" ( (binary_expression "(long)param_4 + param_2[6] + 4" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (goto_statement "goto LAB_00295582;" goto statement_identifier ;) })) (if_statement "if (uVar11 != 0x40) goto LAB_0029592c;" if (parenthesized_expression "(uVar11 != 0x40)" ( (binary_expression "uVar11 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_0029592c;" goto statement_identifier ;)) (if_statement "if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);" do (compound_statement "{\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        }" { (if_statement "if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            dVar18 = *param_4;\n          }" { (expression_statement "dVar18 = *param_4;" (assignment_expression "dVar18 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) }) (else_clause "else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" else (compound_statement "{\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" { (expression_statement "dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));" (assignment_expression "dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" identifier = (cast_expression "(double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" identifier (argument_list "(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" ( (call_expression "CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6))" identifier (argument_list "((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6))" ( (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" (call_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)param_4 << 0x38) >> 0x10)" ( (binary_expression "((ulong)*(byte *)param_4 << 0x38) >> 0x10" (parenthesized_expression "((ulong)*(byte *)param_4 << 0x38)" ( (binary_expression "(ulong)*(byte *)param_4 << 0x38" (binary_expression "(ulong)*(byte *)param_4" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) )) >> number_literal) ))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 1) << 0x30)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 1) << 0x30" (binary_expression "(ulong)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 2) << 0x28)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 2) << 0x28" (binary_expression "(ulong)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 3) << 0x20)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 3) << 0x20" (binary_expression "(ulong)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 4) << 0x18)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 4) << 0x18" (binary_expression "(ulong)*(byte *)((long)param_4 + 4)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 4)" ( (binary_expression "(long)param_4 + 4" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (binary_expression "(uint6)*(byte *)((long)param_4 + 5)" (parenthesized_expression "(uint6)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 5)" ( (binary_expression "(long)param_4 + 5" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((long)param_4 + 6)" * (cast_expression "(byte *)((long)param_4 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 6)" ( (binary_expression "(long)param_4 + 6" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((long)param_4 + 7)" * (cast_expression "(byte *)((long)param_4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 7)" ( (binary_expression "(long)param_4 + 7" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))))) ;) }))) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]))" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((double)param_2[5] * (dVar18 - (double)param_2[3]))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)param_2[5] * (dVar18 - (double)param_2[3]))" ( (binary_expression "(double)param_2[5] * (dVar18 - (double)param_2[3])" (cast_expression "(double)param_2[5]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) * (parenthesized_expression "(dVar18 - (double)param_2[3])" ( (binary_expression "dVar18 - (double)param_2[3]" identifier - (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ))) )))) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 8);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 8)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 8)" ( (binary_expression "(long)param_4 + param_2[6] + 8" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }" statement_identifier : (if_statement "if (0x40 < uVar11) {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(0x40 < uVar11)" ( (binary_expression "0x40 < uVar11" number_literal < identifier) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;" (assignment_expression "uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1" identifier = (binary_expression "(2L << ((char)uVar11 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar11 - 1U & 0x3f))" ( (binary_expression "2L << ((char)uVar11 - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)uVar11 - 1U & 0x3f)" ( (binary_expression "(char)uVar11 - 1U & 0x3f" (binary_expression "(char)uVar11 - 1U" (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) & number_literal) ))) )) - number_literal)) ;) }))) (if_statement "if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);" do (compound_statement "{\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    }" { (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" if (parenthesized_expression "((long)uVar11 < 1)" ( (binary_expression "(long)uVar11 < 1" (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00295a2e:\n        dVar2 = DAT_003fa390;" statement_identifier : (expression_statement "dVar2 = DAT_003fa390;" (assignment_expression "dVar2 = DAT_003fa390" identifier = identifier) ;)) (if_statement "if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }" if (parenthesized_expression "(dVar4 <= (double)uVar15)" ( (binary_expression "dVar4 <= (double)uVar15" identifier <= (cast_expression "(double)uVar15" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n          dVar2 = dVar5 / (double)uVar15;\n        }" { (expression_statement "dVar2 = dVar5 / (double)uVar15;" (assignment_expression "dVar2 = dVar5 / (double)uVar15" identifier = (binary_expression "dVar5 / (double)uVar15" identifier / (cast_expression "(double)uVar15" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "fVar17 = (float)((double)uVar13 * dVar2 * dVar18);" (assignment_expression "fVar17 = (float)((double)uVar13 * dVar2 * dVar18)" identifier = (cast_expression "(float)((double)uVar13 * dVar2 * dVar18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)uVar13 * dVar2 * dVar18)" ( (binary_expression "(double)uVar13 * dVar2 * dVar18" (binary_expression "(double)uVar13 * dVar2" (cast_expression "(double)uVar13" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * identifier) )))) ;) }) (else_clause "else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" else (compound_statement "{\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" { (expression_statement "uVar10 = param_2[0xf];" (assignment_expression "uVar10 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);" do (compound_statement "{\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        }" { (if_statement "if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }" { (expression_statement "*(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;" (assignment_expression "*(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4" (pointer_expression "*(uint *)(param_2 + 0xe)" * (cast_expression "(uint *)(param_2 + 0xe)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe)" ( (binary_expression "param_2 + 0xe" identifier + number_literal) )))) = (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "param_4 = (double *)((long)param_4 + 1);" (assignment_expression "param_4 = (double *)((long)param_4 + 1)" identifier = (cast_expression "(double *)((long)param_4 + 1)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar10 = 8;" (assignment_expression "uVar10 = 8" identifier = number_literal) ;) })) (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }" if (parenthesized_expression "(uVar10 <= uVar11)" ( (binary_expression "uVar10 <= uVar11" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar10;\n          }" { (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar11 = uVar11 - uVar12;" (assignment_expression "uVar11 = uVar11 - uVar12" identifier = (binary_expression "uVar11 - uVar12" identifier - identifier)) ;) (expression_statement "uVar10 = uVar10 - uVar12;" (assignment_expression "uVar10 = uVar10 - uVar12" identifier = (binary_expression "uVar10 - uVar12" identifier - identifier)) ;) (expression_statement "uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));" (assignment_expression "uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" identifier = (binary_expression "uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" (binary_expression "uVar13 << ((byte)uVar12 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "(uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" (binary_expression "(uint)param_2[0xe] >> ((byte)uVar10 & 0x1f)" (cast_expression "(uint)param_2[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xe]" identifier [ number_literal ])) >> (parenthesized_expression "((byte)uVar10 & 0x1f)" ( (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) & (unary_expression "~(uint)(-1L << ((byte)uVar12 & 0x3f))" ~ (call_expression "(uint)(-1L << ((byte)uVar12 & 0x3f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-1L << ((byte)uVar12 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar12 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x3f)" ( (binary_expression "(byte)uVar12 & 0x3f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))))) ;) }) while (parenthesized_expression "(0 < (long)uVar11)" ( (binary_expression "0 < (long)uVar11" number_literal < (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "param_2[0xf] = uVar10;" (assignment_expression "param_2[0xf] = uVar10" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "fVar17 = fVar16;" (assignment_expression "fVar17 = fVar16" identifier = identifier) ;) (if_statement "if (uVar13 <= uVar15) goto LAB_00295a2e;" if (parenthesized_expression "(uVar13 <= uVar15)" ( (binary_expression "uVar13 <= uVar15" identifier <= identifier) )) (goto_statement "goto LAB_00295a2e;" goto statement_identifier ;)) }))) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6]);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6])" identifier = (cast_expression "(double *)((long)param_4 + param_2[6])" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6])" ( (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (labeled_statement "LAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\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;\n  }" { (return_statement "return;" return ;) }))) 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\nvoid ImportBlackQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p\n                       ,Quantum *q,ExceptionInfo *exception)\n\n{\n  PixelTrait PVar1;\n  PixelChannelMap *pPVar2;\n  double dVar3;\n  ushort uVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  Quantum QVar8;\n  double dVar9;\n  double dVar10;\n  uchar *puVar11;\n  MagickSizeType MVar12;\n  ulong uVar13;\n  size_t sVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  long in_FS_OFFSET;\n  float fVar18;\n  float fVar19;\n  double dVar20;\n  Quantum QVar21;\n  float pixel;\n  long local_40;\n  \n  dVar10 = DAT_0042ffc8;\n  dVar9 = DAT_0042ffc0;\n  QVar8 = DAT_0042ffb4;\n  dVar7 = DAT_00404930;\n  dVar3 = DAT_00404920;\n  fVar18 = _DAT_003fa400;\n  dVar6 = DAT_003f9608;\n  dVar5 = DAT_003f9600;\n  dVar20 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (image->colorspace != CMYKColorspace) {\n    ThrowMagickException\n              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename);\n    goto LAB_002953b8;\n  }\n  uVar13 = quantum_info->depth;\n  if (uVar13 == 0x18) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < (long)number_pixels) {\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar13 < 0x19) {\n    if (uVar13 == 8) {\n      if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar13 == 0x10) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar17 = 0;\n    if (uVar13 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar13 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar13 != 0x40) goto LAB_0029592c;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar13) {\n      uVar13 = 0;\n    }\n    uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;\n  }\n  if (0 < (long)number_pixels) {\n    MVar12 = 0;\n    do {\n      sVar14 = quantum_info->depth;\n      if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }\n      if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }\n      p = p + quantum_info->pad;\n      q = q + image->number_channels;\n      MVar12 = MVar12 + 1;\n    } while (MVar12 != number_pixels);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" comment comment comment comment comment comment (function_definition "void ImportBlackQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p\n                       ,Quantum *q,ExceptionInfo *exception)\n\n{\n  PixelTrait PVar1;\n  PixelChannelMap *pPVar2;\n  double dVar3;\n  ushort uVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  Quantum QVar8;\n  double dVar9;\n  double dVar10;\n  uchar *puVar11;\n  MagickSizeType MVar12;\n  ulong uVar13;\n  size_t sVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  long in_FS_OFFSET;\n  float fVar18;\n  float fVar19;\n  double dVar20;\n  Quantum QVar21;\n  float pixel;\n  long local_40;\n  \n  dVar10 = DAT_0042ffc8;\n  dVar9 = DAT_0042ffc0;\n  QVar8 = DAT_0042ffb4;\n  dVar7 = DAT_00404930;\n  dVar3 = DAT_00404920;\n  fVar18 = _DAT_003fa400;\n  dVar6 = DAT_003f9608;\n  dVar5 = DAT_003f9600;\n  dVar20 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (image->colorspace != CMYKColorspace) {\n    ThrowMagickException\n              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename);\n    goto LAB_002953b8;\n  }\n  uVar13 = quantum_info->depth;\n  if (uVar13 == 0x18) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < (long)number_pixels) {\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar13 < 0x19) {\n    if (uVar13 == 8) {\n      if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar13 == 0x10) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar17 = 0;\n    if (uVar13 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar13 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar13 != 0x40) goto LAB_0029592c;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar13) {\n      uVar13 = 0;\n    }\n    uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;\n  }\n  if (0 < (long)number_pixels) {\n    MVar12 = 0;\n    do {\n      sVar14 = quantum_info->depth;\n      if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }\n      if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }\n      p = p + quantum_info->pad;\n      q = q + image->number_channels;\n      MVar12 = MVar12 + 1;\n    } while (MVar12 != number_pixels);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "ImportBlackQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p\n                       ,Quantum *q,ExceptionInfo *exception)" identifier (parameter_list "(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p\n                       ,Quantum *q,ExceptionInfo *exception)" ( (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "QuantumInfo *quantum_info" type_identifier (pointer_declarator "*quantum_info" * identifier)) , (parameter_declaration "MagickSizeType number_pixels" type_identifier identifier) , (parameter_declaration "uchar *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "Quantum *q" type_identifier (pointer_declarator "*q" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  PixelTrait PVar1;\n  PixelChannelMap *pPVar2;\n  double dVar3;\n  ushort uVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  Quantum QVar8;\n  double dVar9;\n  double dVar10;\n  uchar *puVar11;\n  MagickSizeType MVar12;\n  ulong uVar13;\n  size_t sVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  long in_FS_OFFSET;\n  float fVar18;\n  float fVar19;\n  double dVar20;\n  Quantum QVar21;\n  float pixel;\n  long local_40;\n  \n  dVar10 = DAT_0042ffc8;\n  dVar9 = DAT_0042ffc0;\n  QVar8 = DAT_0042ffb4;\n  dVar7 = DAT_00404930;\n  dVar3 = DAT_00404920;\n  fVar18 = _DAT_003fa400;\n  dVar6 = DAT_003f9608;\n  dVar5 = DAT_003f9600;\n  dVar20 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (image->colorspace != CMYKColorspace) {\n    ThrowMagickException\n              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename);\n    goto LAB_002953b8;\n  }\n  uVar13 = quantum_info->depth;\n  if (uVar13 == 0x18) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < (long)number_pixels) {\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar13 < 0x19) {\n    if (uVar13 == 8) {\n      if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar13 == 0x10) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar17 = 0;\n    if (uVar13 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar13 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar13 != 0x40) goto LAB_0029592c;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar13) {\n      uVar13 = 0;\n    }\n    uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;\n  }\n  if (0 < (long)number_pixels) {\n    MVar12 = 0;\n    do {\n      sVar14 = quantum_info->depth;\n      if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }\n      if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }\n      p = p + quantum_info->pad;\n      q = q + image->number_channels;\n      MVar12 = MVar12 + 1;\n    } while (MVar12 != number_pixels);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "PixelTrait PVar1;" type_identifier identifier ;) (declaration "PixelChannelMap *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "Quantum QVar8;" type_identifier identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "uchar *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "MagickSizeType MVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "size_t sVar14;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "float fVar18;" primitive_type identifier ;) (declaration "float fVar19;" primitive_type identifier ;) (declaration "double dVar20;" primitive_type identifier ;) (declaration "Quantum QVar21;" type_identifier identifier ;) (declaration "float pixel;" primitive_type identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "dVar10 = DAT_0042ffc8;" (assignment_expression "dVar10 = DAT_0042ffc8" identifier = identifier) ;) (expression_statement "dVar9 = DAT_0042ffc0;" (assignment_expression "dVar9 = DAT_0042ffc0" identifier = identifier) ;) (expression_statement "QVar8 = DAT_0042ffb4;" (assignment_expression "QVar8 = DAT_0042ffb4" identifier = identifier) ;) (expression_statement "dVar7 = DAT_00404930;" (assignment_expression "dVar7 = DAT_00404930" identifier = identifier) ;) (expression_statement "dVar3 = DAT_00404920;" (assignment_expression "dVar3 = DAT_00404920" identifier = identifier) ;) (expression_statement "fVar18 = _DAT_003fa400;" (assignment_expression "fVar18 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar6 = DAT_003f9608;" (assignment_expression "dVar6 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar5 = DAT_003f9600;" (assignment_expression "dVar5 = DAT_003f9600" identifier = identifier) ;) (expression_statement "dVar20 = DAT_003f95f8;" (assignment_expression "dVar20 = DAT_003f95f8" identifier = 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 (image->colorspace != CMYKColorspace) {\n    ThrowMagickException\n              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename);\n    goto LAB_002953b8;\n  }" if (parenthesized_expression "(image->colorspace != CMYKColorspace)" ( (binary_expression "image->colorspace != CMYKColorspace" (field_expression "image->colorspace" identifier -> field_identifier) != identifier) )) (compound_statement "{\n    ThrowMagickException\n              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename);\n    goto LAB_002953b8;\n  }" { (expression_statement "ThrowMagickException\n              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename);" (call_expression "ThrowMagickException\n              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename)" identifier (argument_list "(exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,\n               "ColorSeparatedImageRequired","`%s\'",image->filename)" ( identifier , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , (string_literal ""ImportBlackQuantum"" " string_content ") , number_literal , identifier , (string_literal ""ColorSeparatedImageRequired"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (field_expression "image->filename" identifier -> field_identifier) ))) ;) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (expression_statement "uVar13 = quantum_info->depth;" (assignment_expression "uVar13 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (uVar13 == 0x18) {\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < (long)number_pixels) {\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }\n    goto LAB_002953b8;\n  }" if (parenthesized_expression "(uVar13 == 0x18)" ( (binary_expression "uVar13 == 0x18" identifier == number_literal) )) (compound_statement "{\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < (long)number_pixels) {\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }\n    goto LAB_002953b8;\n  }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        MVar12 = 0;\n        do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }" { (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);" do (compound_statement "{\n          puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }\n          p = puVar11 + quantum_info->pad;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        }" { (expression_statement "puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);" (assignment_expression "puVar11 = PushQuantumFloat24Pixel(quantum_info,p,&pixel)" identifier = (call_expression "PushQuantumFloat24Pixel(quantum_info,p,&pixel)" identifier (argument_list "(quantum_info,p,&pixel)" ( identifier , identifier , (pointer_expression "&pixel" & identifier) )))) ;) (if_statement "if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] = pixel;\n          }" if (parenthesized_expression "(image->channel_map[3].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[3].traits != UndefinedPixelTrait" (field_expression "image->channel_map[3].traits" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            q[image->channel_map[3].offset] = pixel;\n          }" { (expression_statement "q[image->channel_map[3].offset] = pixel;" (assignment_expression "q[image->channel_map[3].offset] = pixel" (subscript_expression "q[image->channel_map[3].offset]" identifier [ (field_expression "image->channel_map[3].offset" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = identifier) ;) })) (expression_statement "p = puVar11 + quantum_info->pad;" (assignment_expression "p = puVar11 + quantum_info->pad" identifier = (binary_expression "puVar11 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar12 != number_pixels)" ( (binary_expression "MVar12 != number_pixels" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_00295582:\n    if (0 < (long)number_pixels) {\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }" statement_identifier : (if_statement "if (0 < (long)number_pixels) {\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n      pPVar2 = image->channel_map;\n      PVar1 = pPVar2[3].traits;\n      MVar12 = 0;\n      do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);\n    }" { (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar1 = pPVar2[3].traits;" (assignment_expression "PVar1 = pPVar2[3].traits" identifier = (field_expression "pPVar2[3].traits" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      } while (MVar12 != number_pixels);" do (compound_statement "{\n        if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }\n        if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }\n        p = p + quantum_info->pad + 4;\n        q = q + image->number_channels;\n        MVar12 = MVar12 + 1;\n      }" { (if_statement "if (quantum_info->endian == LSBEndian) {\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }\n        else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;\n        }" { (expression_statement "uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p;" (assignment_expression "uVar16 = (uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p" identifier = (binary_expression "(uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10 | (uint)*p" (binary_expression "(uint)p[3] << 0x18 | (uint)p[1] << 8 | (uint)p[2] << 0x10" (binary_expression "(uint)p[3] << 0x18 | (uint)p[1] << 8" (binary_expression "(uint)p[3] << 0x18" (cast_expression "(uint)p[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[3]" identifier [ number_literal ])) << number_literal) | (binary_expression "(uint)p[1] << 8" (cast_expression "(uint)p[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[1]" identifier [ number_literal ])) << number_literal)) | (binary_expression "(uint)p[2] << 0x10" (cast_expression "(uint)p[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[2]" identifier [ number_literal ])) << number_literal)) | (binary_expression "(uint)*p" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) }) (else_clause "else {\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }" else (compound_statement "{\n          uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;\n        }" { (expression_statement "uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18;" (assignment_expression "uVar16 = (uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18" identifier = (binary_expression "(uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10 | (uint)*p << 0x18" (binary_expression "(uint)p[2] << 8 | (uint)p[3] | (uint)p[1] << 0x10" (binary_expression "(uint)p[2] << 8 | (uint)p[3]" (binary_expression "(uint)p[2] << 8" (cast_expression "(uint)p[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[2]" identifier [ number_literal ])) << number_literal) | (cast_expression "(uint)p[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[3]" identifier [ number_literal ]))) | (binary_expression "(uint)p[1] << 0x10" (cast_expression "(uint)p[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "p[1]" identifier [ number_literal ])) << number_literal)) | (binary_expression "(uint)*p << 0x18" (binary_expression "(uint)*p" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal))) ;) }))) (if_statement "if (PVar1 != UndefinedPixelTrait) {\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }" if (parenthesized_expression "(PVar1 != UndefinedPixelTrait)" ( (binary_expression "PVar1 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n          q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);\n        }" { (expression_statement "q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3);" (assignment_expression "q[pPVar2[3].offset] = (float)((double)uVar16 / dVar3)" (subscript_expression "q[pPVar2[3].offset]" identifier [ (field_expression "pPVar2[3].offset" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(float)((double)uVar16 / dVar3)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)uVar16 / dVar3)" ( (binary_expression "(double)uVar16 / dVar3" (cast_expression "(double)uVar16" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )))) ;) })) (expression_statement "p = p + quantum_info->pad + 4;" (assignment_expression "p = p + quantum_info->pad + 4" identifier = (binary_expression "p + quantum_info->pad + 4" (binary_expression "p + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar12 != number_pixels)" ( (binary_expression "MVar12 != number_pixels" identifier != identifier) )) ;) }))) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (if_statement "if (uVar13 < 0x19) {\n    if (uVar13 == 8) {\n      if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar13 == 0x10) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar17 = 0;\n    if (uVar13 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar13 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar13 != 0x40) goto LAB_0029592c;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar13) {\n      uVar13 = 0;\n    }\n    uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;\n  }" if (parenthesized_expression "(uVar13 < 0x19)" ( (binary_expression "uVar13 < 0x19" identifier < number_literal) )) (compound_statement "{\n    if (uVar13 == 8) {\n      if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar13 == 0x10) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar17 = 0;\n    if (uVar13 != 0) goto LAB_002953f9;\n  }" { (if_statement "if (uVar13 == 8) {\n      if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(uVar13 == 8)" ( (binary_expression "uVar13 == 8" identifier == number_literal) )) (compound_statement "{\n      if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }" { (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar1 = pPVar2[3].traits;" (assignment_expression "PVar1 = pPVar2[3].traits" identifier = (field_expression "pPVar2[3].traits" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);" do (compound_statement "{\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }\n          p = p + quantum_info->pad + 1;\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        }" { (if_statement "if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }" if (parenthesized_expression "(PVar1 != UndefinedPixelTrait)" ( (binary_expression "PVar1 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n            q[pPVar2[3].offset] = (float)((double)*p * dVar7);\n          }" { (expression_statement "q[pPVar2[3].offset] = (float)((double)*p * dVar7);" (assignment_expression "q[pPVar2[3].offset] = (float)((double)*p * dVar7)" (subscript_expression "q[pPVar2[3].offset]" identifier [ (field_expression "pPVar2[3].offset" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(float)((double)*p * dVar7)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)*p * dVar7)" ( (binary_expression "(double)*p * dVar7" (cast_expression "(double)*p" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*p" * identifier)) * identifier) )))) ;) })) (expression_statement "p = p + quantum_info->pad + 1;" (assignment_expression "p = p + quantum_info->pad + 1" identifier = (binary_expression "p + quantum_info->pad + 1" (binary_expression "p + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(number_pixels != MVar12)" ( (binary_expression "number_pixels != MVar12" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (if_statement "if (uVar13 == 0x10) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(uVar13 == 0x10)" ( (binary_expression "uVar13 == 0x10" identifier == number_literal) )) (compound_statement "{\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }\n      else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n      }" { (if_statement "if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }" { (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);" do (compound_statement "{\n            if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }\n            fVar18 = HalfToSinglePrecision(uVar4);\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 2);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          }" { (if_statement "if (quantum_info->endian == LSBEndian) {\n              uVar4 = *(ushort *)p;\n            }\n            else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (compound_statement "{\n              uVar4 = *(ushort *)p;\n            }" { (expression_statement "uVar4 = *(ushort *)p;" (assignment_expression "uVar4 = *(ushort *)p" identifier = (pointer_expression "*(ushort *)p" * (cast_expression "(ushort *)p" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }" else (compound_statement "{\n              uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n            }" { (expression_statement "uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));" (assignment_expression "uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1))" identifier = (call_expression "CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1))" identifier (argument_list "((char)*(ushort *)p,*(undefined1 *)((long)p + 1))" ( (cast_expression "(char)*(ushort *)p" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(ushort *)p" * (cast_expression "(ushort *)p" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) , (pointer_expression "*(undefined1 *)((long)p + 1)" * (cast_expression "(undefined1 *)((long)p + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 1)" ( (binary_expression "(long)p + 1" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (expression_statement "fVar18 = HalfToSinglePrecision(uVar4);" (assignment_expression "fVar18 = HalfToSinglePrecision(uVar4)" identifier = (call_expression "HalfToSinglePrecision(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (if_statement "if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }" if (parenthesized_expression "(image->channel_map[3].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[3].traits != UndefinedPixelTrait" (field_expression "image->channel_map[3].traits" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n              q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;\n            }" { (expression_statement "q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400;" (assignment_expression "q[image->channel_map[3].offset] = fVar18 * _DAT_003fa400" (subscript_expression "q[image->channel_map[3].offset]" identifier [ (field_expression "image->channel_map[3].offset" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (binary_expression "fVar18 * _DAT_003fa400" identifier * identifier)) ;) })) (expression_statement "p = (uchar *)((long)p + quantum_info->pad + 2);" (assignment_expression "p = (uchar *)((long)p + quantum_info->pad + 2)" identifier = (cast_expression "(uchar *)((long)p + quantum_info->pad + 2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + quantum_info->pad + 2)" ( (binary_expression "(long)p + quantum_info->pad + 2" (binary_expression "(long)p + quantum_info->pad" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar12 != number_pixels)" ( (binary_expression "MVar12 != number_pixels" identifier != identifier) )) ;) })) }) (else_clause "else if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }" else (if_statement "if (0 < (long)number_pixels) {\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        pPVar2 = image->channel_map;\n        PVar1 = pPVar2[3].traits;\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);\n      }" { (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "PVar1 = pPVar2[3].traits;" (assignment_expression "PVar1 = pPVar2[3].traits" identifier = (field_expression "pPVar2[3].traits" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (number_pixels != MVar12);" do (compound_statement "{\n          if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }\n          if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 2);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        }" { (if_statement "if (quantum_info->endian == LSBEndian) {\n            uVar4 = *(ushort *)p;\n          }\n          else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            uVar4 = *(ushort *)p;\n          }" { (expression_statement "uVar4 = *(ushort *)p;" (assignment_expression "uVar4 = *(ushort *)p" identifier = (pointer_expression "*(ushort *)p" * (cast_expression "(ushort *)p" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }" else (compound_statement "{\n            uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));\n          }" { (expression_statement "uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1));" (assignment_expression "uVar4 = CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1))" identifier = (call_expression "CONCAT11((char)*(ushort *)p,*(undefined1 *)((long)p + 1))" identifier (argument_list "((char)*(ushort *)p,*(undefined1 *)((long)p + 1))" ( (cast_expression "(char)*(ushort *)p" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(ushort *)p" * (cast_expression "(ushort *)p" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) , (pointer_expression "*(undefined1 *)((long)p + 1)" * (cast_expression "(undefined1 *)((long)p + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 1)" ( (binary_expression "(long)p + 1" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (if_statement "if (PVar1 != UndefinedPixelTrait) {\n            q[pPVar2[3].offset] = (float)uVar4;\n          }" if (parenthesized_expression "(PVar1 != UndefinedPixelTrait)" ( (binary_expression "PVar1 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n            q[pPVar2[3].offset] = (float)uVar4;\n          }" { (expression_statement "q[pPVar2[3].offset] = (float)uVar4;" (assignment_expression "q[pPVar2[3].offset] = (float)uVar4" (subscript_expression "q[pPVar2[3].offset]" identifier [ (field_expression "pPVar2[3].offset" (subscript_expression "pPVar2[3]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(float)uVar4" ( (type_descriptor "float" primitive_type) ) identifier)) ;) })) (expression_statement "p = (uchar *)((long)p + quantum_info->pad + 2);" (assignment_expression "p = (uchar *)((long)p + quantum_info->pad + 2)" identifier = (cast_expression "(uchar *)((long)p + quantum_info->pad + 2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + quantum_info->pad + 2)" ( (binary_expression "(long)p + quantum_info->pad + 2" (binary_expression "(long)p + quantum_info->pad" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(number_pixels != MVar12)" ( (binary_expression "number_pixels != MVar12" identifier != identifier) )) ;) })))) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_0029592c:\n    uVar17 = 0;" statement_identifier : (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;)) (if_statement "if (uVar13 != 0) goto LAB_002953f9;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002953f9;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar13 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar13 != 0x40) goto LAB_0029592c;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar13) {\n      uVar13 = 0;\n    }\n    uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;\n  }" else (compound_statement "{\n    if (uVar13 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar13 != 0x40) goto LAB_0029592c;\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar13) {\n      uVar13 = 0;\n    }\n    uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;\n  }" { (if_statement "if (uVar13 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" if (parenthesized_expression "(uVar13 == 0x20)" ( (binary_expression "uVar13 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }\n        goto LAB_002953b8;\n      }" { (if_statement "if (0 < (long)number_pixels) {\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n          MVar12 = 0;\n          do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);\n        }" { (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          } while (MVar12 != number_pixels);" do (compound_statement "{\n            if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }\n            dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;\n            QVar21 = QVar8;\n            if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }\n            if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }\n            p = (uchar *)((long)p + quantum_info->pad + 4);\n            q = q + image->number_channels;\n            MVar12 = MVar12 + 1;\n          }" { (if_statement "if (quantum_info->endian == LSBEndian) {\n              fVar18 = *(float *)p;\n            }\n            else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (compound_statement "{\n              fVar18 = *(float *)p;\n            }" { (expression_statement "fVar18 = *(float *)p;" (assignment_expression "fVar18 = *(float *)p" identifier = (pointer_expression "*(float *)p" * (cast_expression "(float *)p" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }" else (compound_statement "{\n              fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));\n            }" { (expression_statement "fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3));" (assignment_expression "fVar18 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3))" identifier (argument_list "(CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2)),*(byte *)((long)p + 3))" ( (call_expression "CONCAT21((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2))" identifier (argument_list "((ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1),\n                                                *(byte *)((long)p + 2))" ( (binary_expression "(ushort)(((ulong)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((long)p + 1)" (call_expression "(ushort)(((ulong)*p << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((ulong)*p << 0x18) >> 0x10)" ( (binary_expression "((ulong)*p << 0x18) >> 0x10" (parenthesized_expression "((ulong)*p << 0x18)" ( (binary_expression "(ulong)*p << 0x18" (binary_expression "(ulong)*p" (parenthesized_expression "(ulong)" ( identifier )) * identifier) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((long)p + 1)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((long)p + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 1)" ( (binary_expression "(long)p + 1" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((long)p + 2)" * (cast_expression "(byte *)((long)p + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 2)" ( (binary_expression "(long)p + 2" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((long)p + 3)" * (cast_expression "(byte *)((long)p + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 3)" ( (binary_expression "(long)p + 3" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale;" (assignment_expression "dVar20 = ((double)fVar18 - quantum_info->minimum) * quantum_info->scale" identifier = (binary_expression "((double)fVar18 - quantum_info->minimum) * quantum_info->scale" (parenthesized_expression "((double)fVar18 - quantum_info->minimum)" ( (binary_expression "(double)fVar18 - quantum_info->minimum" (cast_expression "(double)fVar18" ( (type_descriptor "double" primitive_type) ) identifier) - (field_expression "quantum_info->minimum" identifier -> field_identifier)) )) * (field_expression "quantum_info->scale" identifier -> field_identifier))) ;) (expression_statement "QVar21 = QVar8;" (assignment_expression "QVar21 = QVar8" identifier = identifier) ;) (if_statement "if ((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)) {\n              QVar21 = (Quantum)dVar20;\n            }" if (parenthesized_expression "((dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10))" ( (binary_expression "(dVar9 <= dVar20) && (QVar21 = DAT_0042ffb8, dVar20 <= dVar10)" (parenthesized_expression "(dVar9 <= dVar20)" ( (binary_expression "dVar9 <= dVar20" identifier <= identifier) )) && (parenthesized_expression "(QVar21 = DAT_0042ffb8, dVar20 <= dVar10)" ( (comma_expression "QVar21 = DAT_0042ffb8, dVar20 <= dVar10" (assignment_expression "QVar21 = DAT_0042ffb8" identifier = identifier) , (binary_expression "dVar20 <= dVar10" identifier <= identifier)) ))) )) (compound_statement "{\n              QVar21 = (Quantum)dVar20;\n            }" { (expression_statement "QVar21 = (Quantum)dVar20;" (assignment_expression "QVar21 = (Quantum)dVar20" identifier = (cast_expression "(Quantum)dVar20" ( (type_descriptor "Quantum" type_identifier) ) identifier)) ;) })) (if_statement "if (image->channel_map[3].traits != UndefinedPixelTrait) {\n              q[image->channel_map[3].offset] = QVar21;\n            }" if (parenthesized_expression "(image->channel_map[3].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[3].traits != UndefinedPixelTrait" (field_expression "image->channel_map[3].traits" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n              q[image->channel_map[3].offset] = QVar21;\n            }" { (expression_statement "q[image->channel_map[3].offset] = QVar21;" (assignment_expression "q[image->channel_map[3].offset] = QVar21" (subscript_expression "q[image->channel_map[3].offset]" identifier [ (field_expression "image->channel_map[3].offset" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = identifier) ;) })) (expression_statement "p = (uchar *)((long)p + quantum_info->pad + 4);" (assignment_expression "p = (uchar *)((long)p + quantum_info->pad + 4)" identifier = (cast_expression "(uchar *)((long)p + quantum_info->pad + 4)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + quantum_info->pad + 4)" ( (binary_expression "(long)p + quantum_info->pad + 4" (binary_expression "(long)p + quantum_info->pad" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar12 != number_pixels)" ( (binary_expression "MVar12 != number_pixels" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (goto_statement "goto LAB_00295582;" goto statement_identifier ;) })) (if_statement "if (uVar13 != 0x40) goto LAB_0029592c;" if (parenthesized_expression "(uVar13 != 0x40)" ( (binary_expression "uVar13 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_0029592c;" goto statement_identifier ;)) (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < (long)number_pixels) {\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        MVar12 = 0;\n        do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);\n      }" { (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        } while (MVar12 != number_pixels);" do (compound_statement "{\n          if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }\n          if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }\n          p = (uchar *)((long)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n          MVar12 = MVar12 + 1;\n        }" { (if_statement "if (quantum_info->endian == LSBEndian) {\n            dVar20 = *(double *)p;\n          }\n          else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }" if (parenthesized_expression "(quantum_info->endian == LSBEndian)" ( (binary_expression "quantum_info->endian == LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            dVar20 = *(double *)p;\n          }" { (expression_statement "dVar20 = *(double *)p;" (assignment_expression "dVar20 = *(double *)p" identifier = (pointer_expression "*(double *)p" * (cast_expression "(double *)p" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }" else (compound_statement "{\n            dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));\n          }" { (expression_statement "dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7));" (assignment_expression "dVar20 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7))" identifier = (cast_expression "(double)CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7))" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT71(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7))" identifier (argument_list "(CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6)),*(byte *)((long)p + 7))" ( (call_expression "CONCAT61((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6))" identifier (argument_list "((uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5),\n                                               *(byte *)((long)p + 6))" ( (binary_expression "(uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10) | (uint6)*(byte *)((long)p + 5)" (binary_expression "(uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10)" (binary_expression "(uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10)" (binary_expression "(uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10)" (binary_expression "(uint6)(((ulong)*p << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10)" (call_expression "(uint6)(((ulong)*p << 0x38) >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*p << 0x38) >> 0x10)" ( (binary_expression "((ulong)*p << 0x38) >> 0x10" (parenthesized_expression "((ulong)*p << 0x38)" ( (binary_expression "(ulong)*p << 0x38" (binary_expression "(ulong)*p" (parenthesized_expression "(ulong)" ( identifier )) * identifier) << number_literal) )) >> number_literal) ))) | (call_expression "(uint6)(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10)" ( (binary_expression "((ulong)*(byte *)((long)p + 1) << 0x30) >>\n                                                      0x10" (parenthesized_expression "((ulong)*(byte *)((long)p + 1) << 0x30)" ( (binary_expression "(ulong)*(byte *)((long)p + 1) << 0x30" (binary_expression "(ulong)*(byte *)((long)p + 1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)p + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 1)" ( (binary_expression "(long)p + 1" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10)" ( (binary_expression "((ulong)*(byte *)((long)p + 2) << 0x28) >>\n                                                      0x10" (parenthesized_expression "((ulong)*(byte *)((long)p + 2) << 0x28)" ( (binary_expression "(ulong)*(byte *)((long)p + 2) << 0x28" (binary_expression "(ulong)*(byte *)((long)p + 2)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)p + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 2)" ( (binary_expression "(long)p + 2" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10)" ( (binary_expression "((ulong)*(byte *)((long)p + 3) << 0x20) >>\n                                                      0x10" (parenthesized_expression "((ulong)*(byte *)((long)p + 3) << 0x20)" ( (binary_expression "(ulong)*(byte *)((long)p + 3) << 0x20" (binary_expression "(ulong)*(byte *)((long)p + 3)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)p + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 3)" ( (binary_expression "(long)p + 3" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10)" ( (binary_expression "((ulong)*(byte *)((long)p + 4) << 0x18) >>\n                                                      0x10" (parenthesized_expression "((ulong)*(byte *)((long)p + 4) << 0x18)" ( (binary_expression "(ulong)*(byte *)((long)p + 4) << 0x18" (binary_expression "(ulong)*(byte *)((long)p + 4)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)p + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 4)" ( (binary_expression "(long)p + 4" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (binary_expression "(uint6)*(byte *)((long)p + 5)" (parenthesized_expression "(uint6)" ( identifier )) * (cast_expression "(byte *)((long)p + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 5)" ( (binary_expression "(long)p + 5" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((long)p + 6)" * (cast_expression "(byte *)((long)p + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 6)" ( (binary_expression "(long)p + 6" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((long)p + 7)" * (cast_expression "(byte *)((long)p + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 7)" ( (binary_expression "(long)p + 7" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))))) ;) }))) (if_statement "if (image->channel_map[3].traits != UndefinedPixelTrait) {\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }" if (parenthesized_expression "(image->channel_map[3].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[3].traits != UndefinedPixelTrait" (field_expression "image->channel_map[3].traits" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));\n          }" { (expression_statement "q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum));" (assignment_expression "q[image->channel_map[3].offset] =\n                 (float)(quantum_info->scale * (dVar20 - quantum_info->minimum))" (subscript_expression "q[image->channel_map[3].offset]" identifier [ (field_expression "image->channel_map[3].offset" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (cast_expression "(float)(quantum_info->scale * (dVar20 - quantum_info->minimum))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(quantum_info->scale * (dVar20 - quantum_info->minimum))" ( (binary_expression "quantum_info->scale * (dVar20 - quantum_info->minimum)" (field_expression "quantum_info->scale" identifier -> field_identifier) * (parenthesized_expression "(dVar20 - quantum_info->minimum)" ( (binary_expression "dVar20 - quantum_info->minimum" identifier - (field_expression "quantum_info->minimum" identifier -> field_identifier)) ))) )))) ;) })) (expression_statement "p = (uchar *)((long)p + quantum_info->pad + 8);" (assignment_expression "p = (uchar *)((long)p + quantum_info->pad + 8)" identifier = (cast_expression "(uchar *)((long)p + quantum_info->pad + 8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + quantum_info->pad + 8)" ( (binary_expression "(long)p + quantum_info->pad + 8" (binary_expression "(long)p + quantum_info->pad" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar12 != number_pixels)" ( (binary_expression "MVar12 != number_pixels" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_002953f9:\n    if (0x40 < uVar13) {\n      uVar13 = 0;\n    }" statement_identifier : (if_statement "if (0x40 < uVar13) {\n      uVar13 = 0;\n    }" if (parenthesized_expression "(0x40 < uVar13)" ( (binary_expression "0x40 < uVar13" number_literal < identifier) )) (compound_statement "{\n      uVar13 = 0;\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1;" (assignment_expression "uVar17 = (2L << ((char)uVar13 - 1U & 0x3f)) - 1" identifier = (binary_expression "(2L << ((char)uVar13 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar13 - 1U & 0x3f))" ( (binary_expression "2L << ((char)uVar13 - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)uVar13 - 1U & 0x3f)" ( (binary_expression "(char)uVar13 - 1U & 0x3f" (binary_expression "(char)uVar13 - 1U" (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) & number_literal) ))) )) - number_literal)) ;) }))) (if_statement "if (0 < (long)number_pixels) {\n    MVar12 = 0;\n    do {\n      sVar14 = quantum_info->depth;\n      if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }\n      if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }\n      p = p + quantum_info->pad;\n      q = q + image->number_channels;\n      MVar12 = MVar12 + 1;\n    } while (MVar12 != number_pixels);\n  }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    MVar12 = 0;\n    do {\n      sVar14 = quantum_info->depth;\n      if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }\n      if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }\n      p = p + quantum_info->pad;\n      q = q + image->number_channels;\n      MVar12 = MVar12 + 1;\n    } while (MVar12 != number_pixels);\n  }" { (expression_statement "MVar12 = 0;" (assignment_expression "MVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n      sVar14 = quantum_info->depth;\n      if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }\n      if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }\n      p = p + quantum_info->pad;\n      q = q + image->number_channels;\n      MVar12 = MVar12 + 1;\n    } while (MVar12 != number_pixels);" do (compound_statement "{\n      sVar14 = quantum_info->depth;\n      if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }\n      if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }\n      p = p + quantum_info->pad;\n      q = q + image->number_channels;\n      MVar12 = MVar12 + 1;\n    }" { (expression_statement "sVar14 = quantum_info->depth;" (assignment_expression "sVar14 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if ((long)sVar14 < 1) {\n        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }\n      else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\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        uVar16 = 0;\nLAB_00295a2e:\n        dVar3 = DAT_003fa390;\n        if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }\n        fVar19 = (float)((double)uVar16 * dVar3 * dVar20);\n      }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00295a2e:\n        dVar3 = DAT_003fa390;" statement_identifier : (expression_statement "dVar3 = DAT_003fa390;" (assignment_expression "dVar3 = DAT_003fa390" identifier = identifier) ;)) (if_statement "if (dVar5 <= (double)uVar17) {\n          dVar3 = dVar6 / (double)uVar17;\n        }" if (parenthesized_expression "(dVar5 <= (double)uVar17)" ( (binary_expression "dVar5 <= (double)uVar17" identifier <= (cast_expression "(double)uVar17" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n          dVar3 = dVar6 / (double)uVar17;\n        }" { (expression_statement "dVar3 = dVar6 / (double)uVar17;" (assignment_expression "dVar3 = dVar6 / (double)uVar17" identifier = (binary_expression "dVar6 / (double)uVar17" identifier / (cast_expression "(double)uVar17" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "fVar19 = (float)((double)uVar16 * dVar3 * dVar20);" (assignment_expression "fVar19 = (float)((double)uVar16 * dVar3 * dVar20)" identifier = (cast_expression "(float)((double)uVar16 * dVar3 * dVar20)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)uVar16 * dVar3 * dVar20)" ( (binary_expression "(double)uVar16 * dVar3 * dVar20" (binary_expression "(double)uVar16 * dVar3" (cast_expression "(double)uVar16" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * identifier) )))) ;) }) (else_clause "else {\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }" else (compound_statement "{\n        uVar13 = (quantum_info->state).bits;\n        uVar16 = 0;\n        do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);\n        (quantum_info->state).bits = uVar13;\n        fVar19 = fVar18;\n        if (uVar16 <= uVar17) goto LAB_00295a2e;\n      }" { (expression_statement "uVar13 = (quantum_info->state).bits;" (assignment_expression "uVar13 = (quantum_info->state).bits" identifier = (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        } while (0 < (long)sVar14);" do (compound_statement "{\n          if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }\n          uVar15 = sVar14;\n          if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }\n          sVar14 = sVar14 - uVar15;\n          uVar13 = uVar13 - uVar15;\n          uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));\n        }" { (if_statement "if (uVar13 == 0) {\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            (quantum_info->state).pixel = (uint)*p;\n            p = p + 1;\n            uVar13 = 8;\n          }" { (expression_statement "(quantum_info->state).pixel = (uint)*p;" (assignment_expression "(quantum_info->state).pixel = (uint)*p" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(uint)*p" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "p = p + 1;" (assignment_expression "p = p + 1" identifier = (binary_expression "p + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = 8;" (assignment_expression "uVar13 = 8" identifier = number_literal) ;) })) (expression_statement "uVar15 = sVar14;" (assignment_expression "uVar15 = sVar14" identifier = identifier) ;) (if_statement "if (uVar13 <= sVar14) {\n            uVar15 = uVar13;\n          }" if (parenthesized_expression "(uVar13 <= sVar14)" ( (binary_expression "uVar13 <= sVar14" identifier <= identifier) )) (compound_statement "{\n            uVar15 = uVar13;\n          }" { (expression_statement "uVar15 = uVar13;" (assignment_expression "uVar15 = uVar13" identifier = identifier) ;) })) (expression_statement "sVar14 = sVar14 - uVar15;" (assignment_expression "sVar14 = sVar14 - uVar15" identifier = (binary_expression "sVar14 - uVar15" identifier - identifier)) ;) (expression_statement "uVar13 = uVar13 - uVar15;" (assignment_expression "uVar13 = uVar13 - uVar15" identifier = (binary_expression "uVar13 - uVar15" identifier - identifier)) ;) (expression_statement "uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f));" (assignment_expression "uVar16 = uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f))" identifier = (binary_expression "uVar16 << ((byte)uVar15 & 0x1f) |\n                   (quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f))" (binary_expression "uVar16 << ((byte)uVar15 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar15 & 0x1f)" ( (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "(quantum_info->state).pixel >> ((byte)uVar13 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar15 & 0x3f))" (binary_expression "(quantum_info->state).pixel >> ((byte)uVar13 & 0x1f)" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) >> (parenthesized_expression "((byte)uVar13 & 0x1f)" ( (binary_expression "(byte)uVar13 & 0x1f" (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) & (unary_expression "~(uint)(-1L << ((byte)uVar15 & 0x3f))" ~ (call_expression "(uint)(-1L << ((byte)uVar15 & 0x3f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-1L << ((byte)uVar15 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar15 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar15 & 0x3f)" ( (binary_expression "(byte)uVar15 & 0x3f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))))) ;) }) while (parenthesized_expression "(0 < (long)sVar14)" ( (binary_expression "0 < (long)sVar14" number_literal < (cast_expression "(long)sVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = uVar13;" (assignment_expression "(quantum_info->state).bits = uVar13" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "fVar19 = fVar18;" (assignment_expression "fVar19 = fVar18" identifier = identifier) ;) (if_statement "if (uVar16 <= uVar17) goto LAB_00295a2e;" if (parenthesized_expression "(uVar16 <= uVar17)" ( (binary_expression "uVar16 <= uVar17" identifier <= identifier) )) (goto_statement "goto LAB_00295a2e;" goto statement_identifier ;)) }))) (if_statement "if (image->channel_map[3].traits != UndefinedPixelTrait) {\n        q[image->channel_map[3].offset] = fVar19;\n      }" if (parenthesized_expression "(image->channel_map[3].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[3].traits != UndefinedPixelTrait" (field_expression "image->channel_map[3].traits" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n        q[image->channel_map[3].offset] = fVar19;\n      }" { (expression_statement "q[image->channel_map[3].offset] = fVar19;" (assignment_expression "q[image->channel_map[3].offset] = fVar19" (subscript_expression "q[image->channel_map[3].offset]" identifier [ (field_expression "image->channel_map[3].offset" (subscript_expression "image->channel_map[3]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = identifier) ;) })) (expression_statement "p = p + quantum_info->pad;" (assignment_expression "p = p + quantum_info->pad" identifier = (binary_expression "p + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "MVar12 = MVar12 + 1;" (assignment_expression "MVar12 = MVar12 + 1" identifier = (binary_expression "MVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar12 != number_pixels)" ( (binary_expression "MVar12 != number_pixels" identifier != identifier) )) ;) })) (labeled_statement "LAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\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;\n  }" { (return_statement "return;" return ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)\n\n{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "void FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)\n\n{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" primitive_type (function_declarator "FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)" identifier (parameter_list "(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "double *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "float fVar16;" primitive_type identifier ;) (declaration "float fVar17;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "dVar8 = DAT_0042ffc8;" (assignment_expression "dVar8 = DAT_0042ffc8" identifier = identifier) ;) (expression_statement "dVar7 = DAT_0042ffc0;" (assignment_expression "dVar7 = DAT_0042ffc0" identifier = identifier) ;) (expression_statement "fVar17 = DAT_0042ffb4;" (assignment_expression "fVar17 = DAT_0042ffb4" identifier = identifier) ;) (expression_statement "dVar6 = DAT_00404930;" (assignment_expression "dVar6 = DAT_00404930" identifier = identifier) ;) (expression_statement "dVar2 = DAT_00404920;" (assignment_expression "dVar2 = DAT_00404920" identifier = identifier) ;) (expression_statement "fVar16 = _DAT_003fa400;" (assignment_expression "fVar16 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar5 = DAT_003f9608;" (assignment_expression "dVar5 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar4 = DAT_003f9600;" (assignment_expression "dVar4 = DAT_003f9600" identifier = identifier) ;) (expression_statement "dVar18 = DAT_003f95f8;" (assignment_expression "dVar18 = DAT_003f95f8" identifier = 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 (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 2)" ( (binary_expression "*(int *)(param_1 + 4) != 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }" { (expression_statement "ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);" (call_expression "ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8)" identifier (argument_list "(param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8)" ( identifier , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , (string_literal ""ImportBlackQuantum"" " string_content ") , number_literal , number_literal , (string_literal ""ColorSeparatedImageRequired"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_1 + 0x3f8" identifier + number_literal) ))) ;) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }" if (parenthesized_expression "(uVar11 == 0x18)" ( (binary_expression "uVar11 == 0x18" identifier == number_literal) )) (compound_statement "{\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }" { (if_statement "if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);" do (compound_statement "{\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        }" { (expression_statement "lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);" (assignment_expression "lVar9 = FUN_0028ddb2(param_2,param_4,&local_44)" identifier = (call_expression "FUN_0028ddb2(param_2,param_4,&local_44)" identifier (argument_list "(param_2,param_4,&local_44)" ( identifier , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }" { (expression_statement "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;" (assignment_expression "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44" (pointer_expression "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "param_4 = (double *)(lVar9 + param_2[6]);" (assignment_expression "param_4 = (double *)(lVar9 + param_2[6])" identifier = (cast_expression "(double *)(lVar9 + param_2[6])" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + param_2[6])" ( (binary_expression "lVar9 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" statement_identifier : (if_statement "if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" { (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" identifier = (pointer_expression "*(int *)(lVar14 + 0x34)" * (cast_expression "(int *)(lVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x34)" ( (binary_expression "lVar14 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);" do (compound_statement "{\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      }" { (if_statement "if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }" { (expression_statement "uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;" (assignment_expression "uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4" identifier = (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18" (binary_expression "(uint)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "(uint)*(byte *)((long)param_4 + 1) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) }) (else_clause "else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" else (compound_statement "{\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" { (expression_statement "uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;" (assignment_expression "uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18" identifier = (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3)" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "(uint)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) | (binary_expression "(uint)*(byte *)((long)param_4 + 1) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal)) | (binary_expression "(uint)*(byte *)param_4 << 0x18" (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal))) ;) }))) (if_statement "if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }" { (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2)" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" identifier + (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" * (cast_expression "(long *)(lVar14 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((double)uVar13 / dVar2)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)uVar13 / dVar2)" ( (binary_expression "(double)uVar13 / dVar2" (cast_expression "(double)uVar13" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )))) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 4);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 4)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 4)" ( (binary_expression "(long)param_4 + param_2[6] + 4" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 != param_3)" ( (binary_expression "lVar9 != param_3" identifier != identifier) )) ;) }))) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (if_statement "if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" if (parenthesized_expression "(uVar11 < 0x19)" ( (binary_expression "uVar11 < 0x19" identifier < number_literal) )) (compound_statement "{\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }" { (if_statement "if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(uVar11 == 8)" ( (binary_expression "uVar11 == 8" identifier == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" { (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" identifier = (pointer_expression "*(int *)(lVar14 + 0x34)" * (cast_expression "(int *)(lVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x34)" ( (binary_expression "lVar14 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);" do (compound_statement "{\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        }" { (if_statement "if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }" { (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6)" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" identifier + (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" * (cast_expression "(long *)(lVar14 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((double)*(byte *)param_4 * dVar6)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)*(byte *)param_4 * dVar6)" ( (binary_expression "(double)*(byte *)param_4 * dVar6" (cast_expression "(double)*(byte *)param_4" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(byte *)param_4" * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) * identifier) )))) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 1);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 1)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 1)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 1)" ( (binary_expression "(long)param_4 + param_2[6] + 1" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != lVar9)" ( (binary_expression "param_3 != lVar9" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (if_statement "if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "(uVar11 == 0x10)" ( (binary_expression "uVar11 == 0x10" identifier == number_literal) )) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }" { (if_statement "if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);" do (compound_statement "{\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          }" { (if_statement "if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              uVar3 = *(ushort *)param_4;\n            }" { (expression_statement "uVar3 = *(ushort *)param_4;" (assignment_expression "uVar3 = *(ushort *)param_4" identifier = (pointer_expression "*(ushort *)param_4" * (cast_expression "(ushort *)param_4" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" else (compound_statement "{\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" { (expression_statement "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));" (assignment_expression "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier = (call_expression "CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier (argument_list "(*(byte *)param_4,*(byte *)((long)param_4 + 1))" ( (pointer_expression "*(byte *)param_4" * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(byte *)((long)param_4 + 1)" * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (expression_statement "fVar16 = (float)FUN_0028db24(uVar3);" (assignment_expression "fVar16 = (float)FUN_0028db24(uVar3)" identifier = (cast_expression "(float)FUN_0028db24(uVar3)" ( (type_descriptor "float" primitive_type) ) (call_expression "FUN_0028db24(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))))) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (binary_expression "fVar16 * _DAT_003fa400" identifier * identifier)) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 2);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 2)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 2)" ( (binary_expression "(long)param_4 + param_2[6] + 2" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) }) (else_clause "else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" else (if_statement "if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" { (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" identifier = (pointer_expression "*(int *)(lVar14 + 0x34)" * (cast_expression "(int *)(lVar14 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x34)" ( (binary_expression "lVar14 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);" do (compound_statement "{\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        }" { (if_statement "if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            uVar3 = *(ushort *)param_4;\n          }" { (expression_statement "uVar3 = *(ushort *)param_4;" (assignment_expression "uVar3 = *(ushort *)param_4" identifier = (pointer_expression "*(ushort *)param_4" * (cast_expression "(ushort *)param_4" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" else (compound_statement "{\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" { (expression_statement "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));" (assignment_expression "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier = (call_expression "CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" identifier (argument_list "(*(byte *)param_4,*(byte *)((long)param_4 + 1))" ( (pointer_expression "*(byte *)param_4" * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(byte *)((long)param_4 + 1)" * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (if_statement "if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }" { (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" identifier + (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" * (cast_expression "(long *)(lVar14 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)uVar3" ( (type_descriptor "float" primitive_type) ) identifier)) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 2);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 2)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 2)" ( (binary_expression "(long)param_4 + param_2[6] + 2" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != lVar9)" ( (binary_expression "param_3 != lVar9" identifier != identifier) )) ;) })))) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_0029592c:\n    uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) (if_statement "if (uVar11 != 0) goto LAB_002953f9;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002953f9;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" else (compound_statement "{\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" { (if_statement "if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" if (parenthesized_expression "(uVar11 == 0x20)" ( (binary_expression "uVar11 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" { (if_statement "if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }" { (if_statement "if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);" do (compound_statement "{\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          }" { (if_statement "if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              fVar16 = *(float *)param_4;\n            }" { (expression_statement "fVar16 = *(float *)param_4;" (assignment_expression "fVar16 = *(float *)param_4" identifier = (pointer_expression "*(float *)param_4" * (cast_expression "(float *)param_4" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" else (compound_statement "{\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" { (expression_statement "fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));" (assignment_expression "fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" identifier (argument_list "(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" ( (call_expression "CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2))" identifier (argument_list "((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2))" ( (binary_expression "(ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1)" (call_expression "(ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((ulong)*(byte *)param_4 << 0x18) >> 0x10)" ( (binary_expression "((ulong)*(byte *)param_4 << 0x18) >> 0x10" (parenthesized_expression "((ulong)*(byte *)param_4 << 0x18)" ( (binary_expression "(ulong)*(byte *)param_4 << 0x18" (binary_expression "(ulong)*(byte *)param_4" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((long)param_4 + 2)" * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((long)param_4 + 3)" * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];" (assignment_expression "dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5]" identifier = (binary_expression "((double)fVar16 - (double)param_2[3]) * (double)param_2[5]" (parenthesized_expression "((double)fVar16 - (double)param_2[3])" ( (binary_expression "(double)fVar16 - (double)param_2[3]" (cast_expression "(double)fVar16" ( (type_descriptor "double" primitive_type) ) identifier) - (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) * (cast_expression "(double)param_2[5]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[5]" identifier [ number_literal ])))) ;) (expression_statement "fVar16 = fVar17;" (assignment_expression "fVar16 = fVar17" identifier = identifier) ;) (if_statement "if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }" if (parenthesized_expression "((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8))" ( (binary_expression "(dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)" (parenthesized_expression "(dVar7 <= dVar18)" ( (binary_expression "dVar7 <= dVar18" identifier <= identifier) )) && (parenthesized_expression "(fVar16 = DAT_0042ffb8, dVar18 <= dVar8)" ( (comma_expression "fVar16 = DAT_0042ffb8, dVar18 <= dVar8" (assignment_expression "fVar16 = DAT_0042ffb8" identifier = identifier) , (binary_expression "dVar18 <= dVar8" identifier <= identifier)) ))) )) (compound_statement "{\n              fVar16 = (float)dVar18;\n            }" { (expression_statement "fVar16 = (float)dVar18;" (assignment_expression "fVar16 = (float)dVar18" identifier = (cast_expression "(float)dVar18" ( (type_descriptor "float" primitive_type) ) identifier)) ;) })) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 4);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 4)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 4)" ( (binary_expression "(long)param_4 + param_2[6] + 4" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (goto_statement "goto LAB_00295582;" goto statement_identifier ;) })) (if_statement "if (uVar11 != 0x40) goto LAB_0029592c;" if (parenthesized_expression "(uVar11 != 0x40)" ( (binary_expression "uVar11 != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_0029592c;" goto statement_identifier ;)) (if_statement "if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" { (if_statement "if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);" do (compound_statement "{\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        }" { (if_statement "if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            dVar18 = *param_4;\n          }" { (expression_statement "dVar18 = *param_4;" (assignment_expression "dVar18 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) }) (else_clause "else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" else (compound_statement "{\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" { (expression_statement "dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));" (assignment_expression "dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" identifier = (cast_expression "(double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" identifier (argument_list "(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" ( (call_expression "CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6))" identifier (argument_list "((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6))" ( (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" (call_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)param_4 << 0x38) >> 0x10)" ( (binary_expression "((ulong)*(byte *)param_4 << 0x38) >> 0x10" (parenthesized_expression "((ulong)*(byte *)param_4 << 0x38)" ( (binary_expression "(ulong)*(byte *)param_4 << 0x38" (binary_expression "(ulong)*(byte *)param_4" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) )) >> number_literal) ))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 1) << 0x30)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 1) << 0x30" (binary_expression "(ulong)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 2) << 0x28)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 2) << 0x28" (binary_expression "(ulong)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 2)" ( (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 3) << 0x20)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 3) << 0x20" (binary_expression "(ulong)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 3)" ( (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" ( identifier )) (argument_list "(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" ( (binary_expression "((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 4) << 0x18)" ( (binary_expression "(ulong)*(byte *)((long)param_4 + 4) << 0x18" (binary_expression "(ulong)*(byte *)((long)param_4 + 4)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 4)" ( (binary_expression "(long)param_4 + 4" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) )))) | (binary_expression "(uint6)*(byte *)((long)param_4 + 5)" (parenthesized_expression "(uint6)" ( identifier )) * (cast_expression "(byte *)((long)param_4 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 5)" ( (binary_expression "(long)param_4 + 5" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((long)param_4 + 6)" * (cast_expression "(byte *)((long)param_4 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 6)" ( (binary_expression "(long)param_4 + 6" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((long)param_4 + 7)" * (cast_expression "(byte *)((long)param_4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 7)" ( (binary_expression "(long)param_4 + 7" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))))) ;) }))) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]))" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(float)((double)param_2[5] * (dVar18 - (double)param_2[3]))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)param_2[5] * (dVar18 - (double)param_2[3]))" ( (binary_expression "(double)param_2[5] * (dVar18 - (double)param_2[3])" (cast_expression "(double)param_2[5]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) * (parenthesized_expression "(dVar18 - (double)param_2[3])" ( (binary_expression "dVar18 - (double)param_2[3]" identifier - (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ))) )))) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 8);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 8)" identifier = (cast_expression "(double *)((long)param_4 + param_2[6] + 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6] + 8)" ( (binary_expression "(long)param_4 + param_2[6] + 8" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (goto_statement "goto LAB_002953b8;" goto statement_identifier ;) })) (labeled_statement "LAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }" statement_identifier : (if_statement "if (0x40 < uVar11) {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(0x40 < uVar11)" ( (binary_expression "0x40 < uVar11" number_literal < identifier) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;" (assignment_expression "uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1" identifier = (binary_expression "(2L << ((char)uVar11 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar11 - 1U & 0x3f))" ( (binary_expression "2L << ((char)uVar11 - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)uVar11 - 1U & 0x3f)" ( (binary_expression "(char)uVar11 - 1U & 0x3f" (binary_expression "(char)uVar11 - 1U" (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) & number_literal) ))) )) - number_literal)) ;) }))) (if_statement "if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }" { (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);" do (compound_statement "{\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    }" { (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" if (parenthesized_expression "((long)uVar11 < 1)" ( (binary_expression "(long)uVar11 < 1" (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00295a2e:\n        dVar2 = DAT_003fa390;" statement_identifier : (expression_statement "dVar2 = DAT_003fa390;" (assignment_expression "dVar2 = DAT_003fa390" identifier = identifier) ;)) (if_statement "if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }" if (parenthesized_expression "(dVar4 <= (double)uVar15)" ( (binary_expression "dVar4 <= (double)uVar15" identifier <= (cast_expression "(double)uVar15" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n          dVar2 = dVar5 / (double)uVar15;\n        }" { (expression_statement "dVar2 = dVar5 / (double)uVar15;" (assignment_expression "dVar2 = dVar5 / (double)uVar15" identifier = (binary_expression "dVar5 / (double)uVar15" identifier / (cast_expression "(double)uVar15" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "fVar17 = (float)((double)uVar13 * dVar2 * dVar18);" (assignment_expression "fVar17 = (float)((double)uVar13 * dVar2 * dVar18)" identifier = (cast_expression "(float)((double)uVar13 * dVar2 * dVar18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)uVar13 * dVar2 * dVar18)" ( (binary_expression "(double)uVar13 * dVar2 * dVar18" (binary_expression "(double)uVar13 * dVar2" (cast_expression "(double)uVar13" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * identifier) )))) ;) }) (else_clause "else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" else (compound_statement "{\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" { (expression_statement "uVar10 = param_2[0xf];" (assignment_expression "uVar10 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);" do (compound_statement "{\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        }" { (if_statement "if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }" { (expression_statement "*(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;" (assignment_expression "*(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4" (pointer_expression "*(uint *)(param_2 + 0xe)" * (cast_expression "(uint *)(param_2 + 0xe)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xe)" ( (binary_expression "param_2 + 0xe" identifier + number_literal) )))) = (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "param_4 = (double *)((long)param_4 + 1);" (assignment_expression "param_4 = (double *)((long)param_4 + 1)" identifier = (cast_expression "(double *)((long)param_4 + 1)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + 1)" ( (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "uVar10 = 8;" (assignment_expression "uVar10 = 8" identifier = number_literal) ;) })) (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }" if (parenthesized_expression "(uVar10 <= uVar11)" ( (binary_expression "uVar10 <= uVar11" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar10;\n          }" { (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar11 = uVar11 - uVar12;" (assignment_expression "uVar11 = uVar11 - uVar12" identifier = (binary_expression "uVar11 - uVar12" identifier - identifier)) ;) (expression_statement "uVar10 = uVar10 - uVar12;" (assignment_expression "uVar10 = uVar10 - uVar12" identifier = (binary_expression "uVar10 - uVar12" identifier - identifier)) ;) (expression_statement "uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));" (assignment_expression "uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" identifier = (binary_expression "uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" (binary_expression "uVar13 << ((byte)uVar12 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "(uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" (binary_expression "(uint)param_2[0xe] >> ((byte)uVar10 & 0x1f)" (cast_expression "(uint)param_2[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xe]" identifier [ number_literal ])) >> (parenthesized_expression "((byte)uVar10 & 0x1f)" ( (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) & (unary_expression "~(uint)(-1L << ((byte)uVar12 & 0x3f))" ~ (call_expression "(uint)(-1L << ((byte)uVar12 & 0x3f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-1L << ((byte)uVar12 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar12 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x3f)" ( (binary_expression "(byte)uVar12 & 0x3f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))))) ;) }) while (parenthesized_expression "(0 < (long)uVar11)" ( (binary_expression "0 < (long)uVar11" number_literal < (cast_expression "(long)uVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "param_2[0xf] = uVar10;" (assignment_expression "param_2[0xf] = uVar10" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "fVar17 = fVar16;" (assignment_expression "fVar17 = fVar16" identifier = identifier) ;) (if_statement "if (uVar13 <= uVar15) goto LAB_00295a2e;" if (parenthesized_expression "(uVar13 <= uVar15)" ( (binary_expression "uVar13 <= uVar15" identifier <= identifier) )) (goto_statement "goto LAB_00295a2e;" goto statement_identifier ;)) }))) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }" { (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" * (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" ( (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6]);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6])" identifier = (cast_expression "(double *)((long)param_4 + param_2[6])" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_4 + param_2[6])" ( (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) )))) ;) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != param_3)" ( (binary_expression "lVar14 != param_3" identifier != identifier) )) ;) })) (labeled_statement "LAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\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;\n  }" { (return_statement "return;" return ;) }))) (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 (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT , (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , (binary_expression IDENT + LIT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (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) )))) + 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT)) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT)) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT)) | (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) << LIT))) ;) }))) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) * IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (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) )))) + 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (binary_expression IDENT * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) )))) ;) }))) (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) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) << LIT) )) >> LIT) ))) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (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) )))) + 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) << LIT) )) >> LIT) ))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT) )) >> LIT) )))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT) )) >> LIT) )))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT) )) >> LIT) )))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) << LIT) )) >> LIT) )))) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (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) )))) + 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & LIT) ))) )) - LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) * IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 + LIT) )))) = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (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)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & (unary_expression ~ (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (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) )))) + 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (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 ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)\n\n{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" (primitive_type "void") (function_declarator "FUN_002952f3(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)" (identifier "FUN_002952f3") (parameter_list "(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,\n                 undefined8 param_6)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "double *param_4" (primitive_type "double") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "long param_5" (sized_type_specifier "long" (long "long")) (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) () ")"))) (compound_statement "{\n  int iVar1;\n  double dVar2;\n  ushort uVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  long lVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  long lVar14;\n  ulong uVar15;\n  long in_FS_OFFSET;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  undefined4 local_44;\n  long local_40;\n  \n  dVar8 = DAT_0042ffc8;\n  dVar7 = DAT_0042ffc0;\n  fVar17 = DAT_0042ffb4;\n  dVar6 = DAT_00404930;\n  dVar2 = DAT_00404920;\n  fVar16 = _DAT_003fa400;\n  dVar5 = DAT_003f9608;\n  dVar4 = DAT_003f9600;\n  dVar18 = DAT_003f95f8;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }\n  uVar11 = *param_2;\n  if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }\n  if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }\n  if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }\nLAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "double dVar2;" (primitive_type "double") (identifier "dVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "double dVar4;" (primitive_type "double") (identifier "dVar4") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "double dVar6;" (primitive_type "double") (identifier "dVar6") (; ";")) (declaration "double dVar7;" (primitive_type "double") (identifier "dVar7") (; ";")) (declaration "double dVar8;" (primitive_type "double") (identifier "dVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "float fVar16;" (primitive_type "float") (identifier "fVar16") (; ";")) (declaration "float fVar17;" (primitive_type "float") (identifier "fVar17") (; ";")) (declaration "double dVar18;" (primitive_type "double") (identifier "dVar18") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "dVar8 = DAT_0042ffc8;" (assignment_expression "dVar8 = DAT_0042ffc8" (identifier "dVar8") (= "=") (identifier "DAT_0042ffc8")) (; ";")) (expression_statement "dVar7 = DAT_0042ffc0;" (assignment_expression "dVar7 = DAT_0042ffc0" (identifier "dVar7") (= "=") (identifier "DAT_0042ffc0")) (; ";")) (expression_statement "fVar17 = DAT_0042ffb4;" (assignment_expression "fVar17 = DAT_0042ffb4" (identifier "fVar17") (= "=") (identifier "DAT_0042ffb4")) (; ";")) (expression_statement "dVar6 = DAT_00404930;" (assignment_expression "dVar6 = DAT_00404930" (identifier "dVar6") (= "=") (identifier "DAT_00404930")) (; ";")) (expression_statement "dVar2 = DAT_00404920;" (assignment_expression "dVar2 = DAT_00404920" (identifier "dVar2") (= "=") (identifier "DAT_00404920")) (; ";")) (expression_statement "fVar16 = _DAT_003fa400;" (assignment_expression "fVar16 = _DAT_003fa400" (identifier "fVar16") (= "=") (identifier "_DAT_003fa400")) (; ";")) (expression_statement "dVar5 = DAT_003f9608;" (assignment_expression "dVar5 = DAT_003f9608" (identifier "dVar5") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "dVar4 = DAT_003f9600;" (assignment_expression "dVar4 = DAT_003f9600" (identifier "dVar4") (= "=") (identifier "DAT_003f9600")) (; ";")) (expression_statement "dVar18 = DAT_003f95f8;" (assignment_expression "dVar18 = DAT_003f95f8" (identifier "dVar18") (= "=") (identifier "DAT_003f95f8")) (; ";")) (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 (*(int *)(param_1 + 4) != 2) {\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) != 2)" (( "(") (binary_expression "*(int *)(param_1 + 4) != 2" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);\n    goto LAB_002953b8;\n  }" ({ "{") (expression_statement "ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);" (call_expression "ThrowMagickException\n              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8)" (identifier "ThrowMagickException") (argument_list "(param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,\n               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8)" (( "(") (identifier "param_6") (, ",") (string_literal ""MagickCore/quantum-import.c"" (" """) (string_content "MagickCore/quantum-import.c") (" """)) (, ",") (string_literal ""ImportBlackQuantum"" (" """) (string_content "ImportBlackQuantum") (" """)) (, ",") (number_literal "0x528") (, ",") (number_literal "0x1d1") (, ",") (string_literal ""ColorSeparatedImageRequired"" (" """) (string_content "ColorSeparatedImageRequired") (" """)) (, ",") (string_literal ""`%s\'"" (" """) (string_content "`%s") (escape_sequence "\'") (" """)) (, ",") (binary_expression "param_1 + 0x3f8" (identifier "param_1") (+ "+") (number_literal "0x3f8")) () ")"))) (; ";")) (goto_statement "goto LAB_002953b8;" (goto "goto") (statement_identifier "LAB_002953b8") (; ";")) (} "}"))) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" (identifier "uVar11") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (uVar11 == 0x18) {\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }" (if "if") (parenthesized_expression "(uVar11 == 0x18)" (( "(") (binary_expression "uVar11 == 0x18" (identifier "uVar11") (== "==") (number_literal "0x18")) () ")")) (compound_statement "{\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }\n    goto LAB_002953b8;\n  }" ({ "{") (if_statement "if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" (if "if") (parenthesized_expression "((int)param_2[2] == 1)" (( "(") (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        lVar14 = 0;\n        do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" ({ "{") (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" (identifier "lVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);" (do "do") (compound_statement "{\n          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }\n          param_4 = (double *)(lVar9 + param_2[6]);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        }" ({ "{") (expression_statement "lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);" (assignment_expression "lVar9 = FUN_0028ddb2(param_2,param_4,&local_44)" (identifier "lVar9") (= "=") (call_expression "FUN_0028ddb2(param_2,param_4,&local_44)" (identifier "FUN_0028ddb2") (argument_list "(param_2,param_4,&local_44)" (( "(") (identifier "param_2") (, ",") (identifier "param_4") (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;" (assignment_expression "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44" (pointer_expression "*(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (* "*") (cast_expression "(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "local_44")) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)(lVar9 + param_2[6]);" (assignment_expression "param_4 = (double *)(lVar9 + param_2[6])" (identifier "param_4") (= "=") (cast_expression "(double *)(lVar9 + param_2[6])" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + param_2[6])" (( "(") (binary_expression "lVar9 + param_2[6]" (identifier "lVar9") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar14 != param_3)" (( "(") (binary_expression "lVar14 != param_3" (identifier "lVar14") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_002953b8;" (goto "goto") (statement_identifier "LAB_002953b8") (; ";")) (} "}"))) (labeled_statement "LAB_00295582:\n    if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" (statement_identifier "LAB_00295582") (: ":") (if_statement "if (0 < param_3) {\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      lVar14 = *(long *)(param_1 + 0x360);\n      iVar1 = *(int *)(lVar14 + 0x34);\n      lVar9 = 0;\n      do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);\n    }" ({ "{") (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" (identifier "lVar14") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(lVar14 + 0x34)" (* "*") (cast_expression "(int *)(lVar14 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x34)" (( "(") (binary_expression "lVar14 + 0x34" (identifier "lVar14") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      } while (lVar9 != param_3);" (do "do") (compound_statement "{\n        if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }\n        if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }\n        param_4 = (double *)((long)param_4 + param_2[6] + 4);\n        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n        lVar9 = lVar9 + 1;\n      }" ({ "{") (if_statement "if ((int)param_2[0xc] == 1) {\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }\n        else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;\n        }" ({ "{") (expression_statement "uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;" (assignment_expression "uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4" (identifier "uVar13") (= "=") (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8 |\n                   (uint)*(byte *)((long)param_4 + 2) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18 |\n                   (uint)*(byte *)((long)param_4 + 1) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 3) << 0x18" (binary_expression "(uint)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 3)" (( "(") (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "3")) () ")")))) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uint)*(byte *)((long)param_4 + 1) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 1)" (( "(") (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 2)" (( "(") (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))))) (; ";")) (} "}")) (else_clause "else {\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" (else "else") (compound_statement "{\n          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;\n        }" ({ "{") (expression_statement "uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;" (assignment_expression "uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18" (identifier "uVar13") (= "=") (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3) |\n                   (uint)*(byte *)((long)param_4 + 1) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8 |\n                   (uint)*(byte *)((long)param_4 + 3)" (binary_expression "(uint)*(byte *)((long)param_4 + 2) << 8" (binary_expression "(uint)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 2)" (( "(") (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "8")) (| "|") (binary_expression "(uint)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 3)" (( "(") (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "3")) () ")"))))) (| "|") (binary_expression "(uint)*(byte *)((long)param_4 + 1) << 0x10" (binary_expression "(uint)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 1)" (( "(") (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)*(byte *)param_4 << 0x18" (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))) (<< "<<") (number_literal "0x18")))) (; ";")) (} "}")))) (if_statement "if (iVar1 != 0) {\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);\n        }" ({ "{") (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2)" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" (* "*") (cast_expression "(long *)(lVar14 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x38)" (( "(") (binary_expression "lVar14 + 0x38" (identifier "lVar14") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((double)uVar13 / dVar2)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)uVar13 / dVar2)" (( "(") (binary_expression "(double)uVar13 / dVar2" (cast_expression "(double)uVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar13")) (/ "/") (identifier "dVar2")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 4);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 4)" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + param_2[6] + 4)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + param_2[6] + 4)" (( "(") (binary_expression "(long)param_4 + param_2[6] + 4" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + 1" (identifier "lVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar9 != param_3)" (( "(") (binary_expression "lVar9 != param_3" (identifier "lVar9") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}")))) (goto_statement "goto LAB_002953b8;" (goto "goto") (statement_identifier "LAB_002953b8") (; ";")) (} "}"))) (if_statement "if (uVar11 < 0x19) {\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }\n  else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" (if "if") (parenthesized_expression "(uVar11 < 0x19)" (( "(") (binary_expression "uVar11 < 0x19" (identifier "uVar11") (< "<") (number_literal "0x19")) () ")")) (compound_statement "{\n    if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\n    if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }\nLAB_0029592c:\n    uVar15 = 0;\n    if (uVar11 != 0) goto LAB_002953f9;\n  }" ({ "{") (if_statement "if (uVar11 == 8) {\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" (if "if") (parenthesized_expression "(uVar11 == 8)" (( "(") (binary_expression "uVar11 == 8" (identifier "uVar11") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" ({ "{") (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" (identifier "lVar14") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(lVar14 + 0x34)" (* "*") (cast_expression "(int *)(lVar14 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x34)" (( "(") (binary_expression "lVar14 + 0x34" (identifier "lVar14") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);" (do "do") (compound_statement "{\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 1);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        }" ({ "{") (if_statement "if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);\n          }" ({ "{") (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6);" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =\n                 (float)((double)*(byte *)param_4 * dVar6)" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" (* "*") (cast_expression "(long *)(lVar14 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x38)" (( "(") (binary_expression "lVar14 + 0x38" (identifier "lVar14") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((double)*(byte *)param_4 * dVar6)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)*(byte *)param_4 * dVar6)" (( "(") (binary_expression "(double)*(byte *)param_4 * dVar6" (cast_expression "(double)*(byte *)param_4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(byte *)param_4" (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (* "*") (identifier "dVar6")) () ")")))) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 1);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 1)" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + param_2[6] + 1)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + param_2[6] + 1)" (( "(") (binary_expression "(long)param_4 + param_2[6] + 1" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + 1" (identifier "lVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != lVar9)" (( "(") (binary_expression "param_3 != lVar9" (identifier "param_3") (!= "!=") (identifier "lVar9")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_002953b8;" (goto "goto") (statement_identifier "LAB_002953b8") (; ";")) (} "}"))) (if_statement "if (uVar11 == 0x10) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" (if "if") (parenthesized_expression "(uVar11 == 0x10)" (( "(") (binary_expression "uVar11 == 0x10" (identifier "uVar11") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }\n      goto LAB_002953b8;\n    }" ({ "{") (if_statement "if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }\n      else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" (if "if") (parenthesized_expression "((int)param_2[2] == 1)" (( "(") (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n      }" ({ "{") (if_statement "if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" ({ "{") (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" (identifier "lVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);" (do "do") (compound_statement "{\n            if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }\n            fVar16 = (float)FUN_0028db24(uVar3);\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 2);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          }" ({ "{") (if_statement "if ((int)param_2[0xc] == 1) {\n              uVar3 = *(ushort *)param_4;\n            }\n            else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              uVar3 = *(ushort *)param_4;\n            }" ({ "{") (expression_statement "uVar3 = *(ushort *)param_4;" (assignment_expression "uVar3 = *(ushort *)param_4" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)param_4" (* "*") (cast_expression "(ushort *)param_4" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (; ";")) (} "}")) (else_clause "else {\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" (else "else") (compound_statement "{\n              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n            }" ({ "{") (expression_statement "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));" (assignment_expression "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" (identifier "uVar3") (= "=") (call_expression "CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" (identifier "CONCAT11") (argument_list "(*(byte *)param_4,*(byte *)((long)param_4 + 1))" (( "(") (pointer_expression "*(byte *)param_4" (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))) (, ",") (pointer_expression "*(byte *)((long)param_4 + 1)" (* "*") (cast_expression "(byte *)((long)param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 1)" (( "(") (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) () ")")))) (; ";")) (} "}")))) (expression_statement "fVar16 = (float)FUN_0028db24(uVar3);" (assignment_expression "fVar16 = (float)FUN_0028db24(uVar3)" (identifier "fVar16") (= "=") (cast_expression "(float)FUN_0028db24(uVar3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "FUN_0028db24(uVar3)" (identifier "FUN_0028db24") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))))) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;\n            }" ({ "{") (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                   fVar16 * _DAT_003fa400" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (binary_expression "fVar16 * _DAT_003fa400" (identifier "fVar16") (* "*") (identifier "_DAT_003fa400"))) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 2);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 2)" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + param_2[6] + 2)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + param_2[6] + 2)" (( "(") (binary_expression "(long)param_4 + param_2[6] + 2" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar14 != param_3)" (( "(") (binary_expression "lVar14 != param_3" (identifier "lVar14") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" (else "else") (if_statement "if (0 < param_3) {\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        lVar14 = *(long *)(param_1 + 0x360);\n        iVar1 = *(int *)(lVar14 + 0x34);\n        lVar9 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);\n      }" ({ "{") (expression_statement "lVar14 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar14 = *(long *)(param_1 + 0x360)" (identifier "lVar14") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(lVar14 + 0x34);" (assignment_expression "iVar1 = *(int *)(lVar14 + 0x34)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(lVar14 + 0x34)" (* "*") (cast_expression "(int *)(lVar14 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x34)" (( "(") (binary_expression "lVar14 + 0x34" (identifier "lVar14") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        } while (param_3 != lVar9);" (do "do") (compound_statement "{\n          if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }\n          if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 2);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar9 = lVar9 + 1;\n        }" ({ "{") (if_statement "if ((int)param_2[0xc] == 1) {\n            uVar3 = *(ushort *)param_4;\n          }\n          else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            uVar3 = *(ushort *)param_4;\n          }" ({ "{") (expression_statement "uVar3 = *(ushort *)param_4;" (assignment_expression "uVar3 = *(ushort *)param_4" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)param_4" (* "*") (cast_expression "(ushort *)param_4" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (; ";")) (} "}")) (else_clause "else {\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" (else "else") (compound_statement "{\n            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));\n          }" ({ "{") (expression_statement "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));" (assignment_expression "uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" (identifier "uVar3") (= "=") (call_expression "CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1))" (identifier "CONCAT11") (argument_list "(*(byte *)param_4,*(byte *)((long)param_4 + 1))" (( "(") (pointer_expression "*(byte *)param_4" (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))) (, ",") (pointer_expression "*(byte *)((long)param_4 + 1)" (* "*") (cast_expression "(byte *)((long)param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 1)" (( "(") (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar1 != 0) {\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;\n          }" ({ "{") (expression_statement "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;" (assignment_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3" (pointer_expression "*(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(lVar14 + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(lVar14 + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(lVar14 + 0x38) * 4" (pointer_expression "*(long *)(lVar14 + 0x38)" (* "*") (cast_expression "(long *)(lVar14 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x38)" (( "(") (binary_expression "lVar14 + 0x38" (identifier "lVar14") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)uVar3" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "uVar3"))) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 2);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 2)" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + param_2[6] + 2)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + param_2[6] + 2)" (( "(") (binary_expression "(long)param_4 + param_2[6] + 2" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + 1" (identifier "lVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != lVar9)" (( "(") (binary_expression "param_3 != lVar9" (identifier "param_3") (!= "!=") (identifier "lVar9")) () ")")) (; ";")) (} "}"))))) (goto_statement "goto LAB_002953b8;" (goto "goto") (statement_identifier "LAB_002953b8") (; ";")) (} "}"))) (labeled_statement "LAB_0029592c:\n    uVar15 = 0;" (statement_identifier "LAB_0029592c") (: ":") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (uVar11 != 0) goto LAB_002953f9;" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_002953f9;" (goto "goto") (statement_identifier "LAB_002953f9") (; ";"))) (} "}")) (else_clause "else {\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" (else "else") (compound_statement "{\n    if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }\n    if (uVar11 != 0x40) goto LAB_0029592c;\n    if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }\nLAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }\n    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;\n  }" ({ "{") (if_statement "if (uVar11 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" (if "if") (parenthesized_expression "(uVar11 == 0x20)" (( "(") (binary_expression "uVar11 == 0x20" (identifier "uVar11") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }\n      goto LAB_00295582;\n    }" ({ "{") (if_statement "if ((int)param_2[2] == 1) {\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }" (if "if") (parenthesized_expression "((int)param_2[2] == 1)" (( "(") (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }\n        goto LAB_002953b8;\n      }" ({ "{") (if_statement "if (0 < param_3) {\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n          lVar14 = 0;\n          do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);\n        }" ({ "{") (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" (identifier "lVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          } while (lVar14 != param_3);" (do "do") (compound_statement "{\n            if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }\n            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];\n            fVar16 = fVar17;\n            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }\n            param_4 = (double *)((long)param_4 + param_2[6] + 4);\n            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n            lVar14 = lVar14 + 1;\n          }" ({ "{") (if_statement "if ((int)param_2[0xc] == 1) {\n              fVar16 = *(float *)param_4;\n            }\n            else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              fVar16 = *(float *)param_4;\n            }" ({ "{") (expression_statement "fVar16 = *(float *)param_4;" (assignment_expression "fVar16 = *(float *)param_4" (identifier "fVar16") (= "=") (pointer_expression "*(float *)param_4" (* "*") (cast_expression "(float *)param_4" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (; ";")) (} "}")) (else_clause "else {\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" (else "else") (compound_statement "{\n              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));\n            }" ({ "{") (expression_statement "fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3));" (assignment_expression "fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" (identifier "fVar16") (= "=") (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" (identifier "CONCAT31") (argument_list "(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2)),\n                                       *(byte *)((long)param_4 + 3))" (( "(") (call_expression "CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2))" (identifier "CONCAT21") (argument_list "((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1),\n                                                *(byte *)((long)param_4 + 2))" (( "(") (binary_expression "(ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)\n                                                | (ushort)*(byte *)((long)param_4 + 1)" (call_expression "(ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(((ulong)*(byte *)param_4 << 0x18) >> 0x10)" (( "(") (binary_expression "((ulong)*(byte *)param_4 << 0x18) >> 0x10" (parenthesized_expression "((ulong)*(byte *)param_4 << 0x18)" (( "(") (binary_expression "(ulong)*(byte *)param_4 << 0x18" (binary_expression "(ulong)*(byte *)param_4" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))) (<< "<<") (number_literal "0x18")) () ")")) (>> ">>") (number_literal "0x10")) () ")"))) (| "|") (binary_expression "(ushort)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 1)" (( "(") (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")"))))) (, ",") (pointer_expression "*(byte *)((long)param_4 + 2)" (* "*") (cast_expression "(byte *)((long)param_4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 2)" (( "(") (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "2")) () ")")))) () ")"))) (, ",") (pointer_expression "*(byte *)((long)param_4 + 3)" (* "*") (cast_expression "(byte *)((long)param_4 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 3)" (( "(") (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "3")) () ")")))) () ")"))))) (; ";")) (} "}")))) (expression_statement "dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];" (assignment_expression "dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5]" (identifier "dVar18") (= "=") (binary_expression "((double)fVar16 - (double)param_2[3]) * (double)param_2[5]" (parenthesized_expression "((double)fVar16 - (double)param_2[3])" (( "(") (binary_expression "(double)fVar16 - (double)param_2[3]" (cast_expression "(double)fVar16" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar16")) (- "-") (cast_expression "(double)param_2[3]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (* "*") (cast_expression "(double)param_2[5]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))))) (; ";")) (expression_statement "fVar16 = fVar17;" (assignment_expression "fVar16 = fVar17" (identifier "fVar16") (= "=") (identifier "fVar17")) (; ";")) (if_statement "if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {\n              fVar16 = (float)dVar18;\n            }" (if "if") (parenthesized_expression "((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8))" (( "(") (binary_expression "(dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)" (parenthesized_expression "(dVar7 <= dVar18)" (( "(") (binary_expression "dVar7 <= dVar18" (identifier "dVar7") (<= "<=") (identifier "dVar18")) () ")")) (&& "&&") (parenthesized_expression "(fVar16 = DAT_0042ffb8, dVar18 <= dVar8)" (( "(") (comma_expression "fVar16 = DAT_0042ffb8, dVar18 <= dVar8" (assignment_expression "fVar16 = DAT_0042ffb8" (identifier "fVar16") (= "=") (identifier "DAT_0042ffb8")) (, ",") (binary_expression "dVar18 <= dVar8" (identifier "dVar18") (<= "<=") (identifier "dVar8"))) () ")"))) () ")")) (compound_statement "{\n              fVar16 = (float)dVar18;\n            }" ({ "{") (expression_statement "fVar16 = (float)dVar18;" (assignment_expression "fVar16 = (float)dVar18" (identifier "fVar16") (= "=") (cast_expression "(float)dVar18" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar18"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;\n            }" ({ "{") (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "fVar16")) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 4);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 4)" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + param_2[6] + 4)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + param_2[6] + 4)" (( "(") (binary_expression "(long)param_4 + param_2[6] + 4" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar14 != param_3)" (( "(") (binary_expression "lVar14 != param_3" (identifier "lVar14") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_002953b8;" (goto "goto") (statement_identifier "LAB_002953b8") (; ";")) (} "}"))) (goto_statement "goto LAB_00295582;" (goto "goto") (statement_identifier "LAB_00295582") (; ";")) (} "}"))) (if_statement "if (uVar11 != 0x40) goto LAB_0029592c;" (if "if") (parenthesized_expression "(uVar11 != 0x40)" (( "(") (binary_expression "uVar11 != 0x40" (identifier "uVar11") (!= "!=") (number_literal "0x40")) () ")")) (goto_statement "goto LAB_0029592c;" (goto "goto") (statement_identifier "LAB_0029592c") (; ";"))) (if_statement "if ((int)param_2[2] == 1) {\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" (if "if") (parenthesized_expression "((int)param_2[2] == 1)" (( "(") (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }\n      goto LAB_002953b8;\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        lVar14 = 0;\n        do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);\n      }" ({ "{") (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" (identifier "lVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        } while (lVar14 != param_3);" (do "do") (compound_statement "{\n          if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }\n          param_4 = (double *)((long)param_4 + param_2[6] + 8);\n          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n          lVar14 = lVar14 + 1;\n        }" ({ "{") (if_statement "if ((int)param_2[0xc] == 1) {\n            dVar18 = *param_4;\n          }\n          else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            dVar18 = *param_4;\n          }" ({ "{") (expression_statement "dVar18 = *param_4;" (assignment_expression "dVar18 = *param_4" (identifier "dVar18") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (} "}")) (else_clause "else {\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" (else "else") (compound_statement "{\n            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));\n          }" ({ "{") (expression_statement "dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7));" (assignment_expression "dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" (identifier "dVar18") (= "=") (cast_expression "(double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" (identifier "CONCAT71") (argument_list "(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6)),\n                                      *(byte *)((long)param_4 + 7))" (( "(") (call_expression "CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6))" (identifier "CONCAT61") (argument_list "((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)\n                                               ,*(byte *)((long)param_4 + 6))" (( "(") (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" (binary_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |\n                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" (call_expression "(uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10)" (parenthesized_expression "(uint6)" (( "(") (identifier "uint6") () ")")) (argument_list "(((ulong)*(byte *)param_4 << 0x38) >> 0x10)" (( "(") (binary_expression "((ulong)*(byte *)param_4 << 0x38) >> 0x10" (parenthesized_expression "((ulong)*(byte *)param_4 << 0x38)" (( "(") (binary_expression "(ulong)*(byte *)param_4 << 0x38" (binary_expression "(ulong)*(byte *)param_4" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))) (<< "<<") (number_literal "0x38")) () ")")) (>> ">>") (number_literal "0x10")) () ")"))) (| "|") (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" (( "(") (identifier "uint6") () ")")) (argument_list "(((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10)" (( "(") (binary_expression "((ulong)*(byte *)((long)param_4 + 1) << 0x30)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 1) << 0x30)" (( "(") (binary_expression "(ulong)*(byte *)((long)param_4 + 1) << 0x30" (binary_expression "(ulong)*(byte *)((long)param_4 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 1)" (( "(") (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "0x30")) () ")")) (>> ">>") (number_literal "0x10")) () ")")))) (| "|") (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" (( "(") (identifier "uint6") () ")")) (argument_list "(((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10)" (( "(") (binary_expression "((ulong)*(byte *)((long)param_4 + 2) << 0x28)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 2) << 0x28)" (( "(") (binary_expression "(ulong)*(byte *)((long)param_4 + 2) << 0x28" (binary_expression "(ulong)*(byte *)((long)param_4 + 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 2)" (( "(") (binary_expression "(long)param_4 + 2" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "0x28")) () ")")) (>> ">>") (number_literal "0x10")) () ")")))) (| "|") (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" (( "(") (identifier "uint6") () ")")) (argument_list "(((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10)" (( "(") (binary_expression "((ulong)*(byte *)((long)param_4 + 3) << 0x20)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 3) << 0x20)" (( "(") (binary_expression "(ulong)*(byte *)((long)param_4 + 3) << 0x20" (binary_expression "(ulong)*(byte *)((long)param_4 + 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 3)" (( "(") (binary_expression "(long)param_4 + 3" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "3")) () ")")))) (<< "<<") (number_literal "0x20")) () ")")) (>> ">>") (number_literal "0x10")) () ")")))) (| "|") (call_expression "(uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" (parenthesized_expression "(uint6)" (( "(") (identifier "uint6") () ")")) (argument_list "(((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10)" (( "(") (binary_expression "((ulong)*(byte *)((long)param_4 + 4) << 0x18)\n                                                      >> 0x10" (parenthesized_expression "((ulong)*(byte *)((long)param_4 + 4) << 0x18)" (( "(") (binary_expression "(ulong)*(byte *)((long)param_4 + 4) << 0x18" (binary_expression "(ulong)*(byte *)((long)param_4 + 4)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 4)" (( "(") (binary_expression "(long)param_4 + 4" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "4")) () ")")))) (<< "<<") (number_literal "0x18")) () ")")) (>> ">>") (number_literal "0x10")) () ")")))) (| "|") (binary_expression "(uint6)*(byte *)((long)param_4 + 5)" (parenthesized_expression "(uint6)" (( "(") (identifier "uint6") () ")")) (* "*") (cast_expression "(byte *)((long)param_4 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 5)" (( "(") (binary_expression "(long)param_4 + 5" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "5")) () ")"))))) (, ",") (pointer_expression "*(byte *)((long)param_4 + 6)" (* "*") (cast_expression "(byte *)((long)param_4 + 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 6)" (( "(") (binary_expression "(long)param_4 + 6" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "6")) () ")")))) () ")"))) (, ",") (pointer_expression "*(byte *)((long)param_4 + 7)" (* "*") (cast_expression "(byte *)((long)param_4 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 7)" (( "(") (binary_expression "(long)param_4 + 7" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "7")) () ")")))) () ")"))))) (; ";")) (} "}")))) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));\n          }" ({ "{") (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =\n                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]))" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(float)((double)param_2[5] * (dVar18 - (double)param_2[3]))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)param_2[5] * (dVar18 - (double)param_2[3]))" (( "(") (binary_expression "(double)param_2[5] * (dVar18 - (double)param_2[3])" (cast_expression "(double)param_2[5]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (* "*") (parenthesized_expression "(dVar18 - (double)param_2[3])" (( "(") (binary_expression "dVar18 - (double)param_2[3]" (identifier "dVar18") (- "-") (cast_expression "(double)param_2[3]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")"))) () ")")))) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6] + 8);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6] + 8)" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + param_2[6] + 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + param_2[6] + 8)" (( "(") (binary_expression "(long)param_4 + param_2[6] + 8" (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar14 != param_3)" (( "(") (binary_expression "lVar14 != param_3" (identifier "lVar14") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_002953b8;" (goto "goto") (statement_identifier "LAB_002953b8") (; ";")) (} "}"))) (labeled_statement "LAB_002953f9:\n    if (0x40 < uVar11) {\n      uVar11 = 0;\n    }" (statement_identifier "LAB_002953f9") (: ":") (if_statement "if (0x40 < uVar11) {\n      uVar11 = 0;\n    }" (if "if") (parenthesized_expression "(0x40 < uVar11)" (( "(") (binary_expression "0x40 < uVar11" (number_literal "0x40") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n      uVar11 = 0;\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;" (assignment_expression "uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1" (identifier "uVar15") (= "=") (binary_expression "(2L << ((char)uVar11 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar11 - 1U & 0x3f))" (( "(") (binary_expression "2L << ((char)uVar11 - 1U & 0x3f)" (number_literal "2L") (<< "<<") (parenthesized_expression "((char)uVar11 - 1U & 0x3f)" (( "(") (binary_expression "(char)uVar11 - 1U & 0x3f" (binary_expression "(char)uVar11 - 1U" (cast_expression "(char)uVar11" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar11")) (- "-") (number_literal "1U")) (& "&") (number_literal "0x3f")) () ")"))) () ")")) (- "-") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (0 < param_3) {\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    lVar14 = 0;\n    do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);\n  }" ({ "{") (expression_statement "lVar14 = 0;" (assignment_expression "lVar14 = 0" (identifier "lVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    } while (lVar14 != param_3);" (do "do") (compound_statement "{\n      uVar11 = *param_2;\n      if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }\n      param_4 = (double *)((long)param_4 + param_2[6]);\n      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;\n      lVar14 = lVar14 + 1;\n    }" ({ "{") (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" (identifier "uVar11") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if ((long)uVar11 < 1) {\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }\n      else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" (if "if") (parenthesized_expression "((long)uVar11 < 1)" (( "(") (binary_expression "(long)uVar11 < 1" (cast_expression "(long)uVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar11")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar13 = 0;\nLAB_00295a2e:\n        dVar2 = DAT_003fa390;\n        if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }\n        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);\n      }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00295a2e:\n        dVar2 = DAT_003fa390;" (statement_identifier "LAB_00295a2e") (: ":") (expression_statement "dVar2 = DAT_003fa390;" (assignment_expression "dVar2 = DAT_003fa390" (identifier "dVar2") (= "=") (identifier "DAT_003fa390")) (; ";"))) (if_statement "if (dVar4 <= (double)uVar15) {\n          dVar2 = dVar5 / (double)uVar15;\n        }" (if "if") (parenthesized_expression "(dVar4 <= (double)uVar15)" (( "(") (binary_expression "dVar4 <= (double)uVar15" (identifier "dVar4") (<= "<=") (cast_expression "(double)uVar15" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar15"))) () ")")) (compound_statement "{\n          dVar2 = dVar5 / (double)uVar15;\n        }" ({ "{") (expression_statement "dVar2 = dVar5 / (double)uVar15;" (assignment_expression "dVar2 = dVar5 / (double)uVar15" (identifier "dVar2") (= "=") (binary_expression "dVar5 / (double)uVar15" (identifier "dVar5") (/ "/") (cast_expression "(double)uVar15" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar15")))) (; ";")) (} "}"))) (expression_statement "fVar17 = (float)((double)uVar13 * dVar2 * dVar18);" (assignment_expression "fVar17 = (float)((double)uVar13 * dVar2 * dVar18)" (identifier "fVar17") (= "=") (cast_expression "(float)((double)uVar13 * dVar2 * dVar18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)uVar13 * dVar2 * dVar18)" (( "(") (binary_expression "(double)uVar13 * dVar2 * dVar18" (binary_expression "(double)uVar13 * dVar2" (cast_expression "(double)uVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar13")) (* "*") (identifier "dVar2")) (* "*") (identifier "dVar18")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" (else "else") (compound_statement "{\n        uVar10 = param_2[0xf];\n        uVar13 = 0;\n        do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);\n        param_2[0xf] = uVar10;\n        fVar17 = fVar16;\n        if (uVar13 <= uVar15) goto LAB_00295a2e;\n      }" ({ "{") (expression_statement "uVar10 = param_2[0xf];" (assignment_expression "uVar10 = param_2[0xf]" (identifier "uVar10") (= "=") (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        } while (0 < (long)uVar11);" (do "do") (compound_statement "{\n          if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }\n          uVar12 = uVar11;\n          if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }\n          uVar11 = uVar11 - uVar12;\n          uVar10 = uVar10 - uVar12;\n          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));\n        }" ({ "{") (if_statement "if (uVar10 == 0) {\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;\n            param_4 = (double *)((long)param_4 + 1);\n            uVar10 = 8;\n          }" ({ "{") (expression_statement "*(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;" (assignment_expression "*(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4" (pointer_expression "*(uint *)(param_2 + 0xe)" (* "*") (cast_expression "(uint *)(param_2 + 0xe)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xe)" (( "(") (binary_expression "param_2 + 0xe" (identifier "param_2") (+ "+") (number_literal "0xe")) () ")")))) (= "=") (binary_expression "(uint)*(byte *)param_4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (; ";")) (expression_statement "param_4 = (double *)((long)param_4 + 1);" (assignment_expression "param_4 = (double *)((long)param_4 + 1)" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + 1)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + 1)" (( "(") (binary_expression "(long)param_4 + 1" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar10 = 8;" (assignment_expression "uVar10 = 8" (identifier "uVar10") (= "=") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" (identifier "uVar12") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (uVar10 <= uVar11) {\n            uVar12 = uVar10;\n          }" (if "if") (parenthesized_expression "(uVar10 <= uVar11)" (( "(") (binary_expression "uVar10 <= uVar11" (identifier "uVar10") (<= "<=") (identifier "uVar11")) () ")")) (compound_statement "{\n            uVar12 = uVar10;\n          }" ({ "{") (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" (identifier "uVar12") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "uVar11 = uVar11 - uVar12;" (assignment_expression "uVar11 = uVar11 - uVar12" (identifier "uVar11") (= "=") (binary_expression "uVar11 - uVar12" (identifier "uVar11") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar10 = uVar10 - uVar12;" (assignment_expression "uVar10 = uVar10 - uVar12" (identifier "uVar10") (= "=") (binary_expression "uVar10 - uVar12" (identifier "uVar10") (- "-") (identifier "uVar12"))) (; ";")) (expression_statement "uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));" (assignment_expression "uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" (identifier "uVar13") (= "=") (binary_expression "uVar13 << ((byte)uVar12 & 0x1f) |\n                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" (binary_expression "uVar13 << ((byte)uVar12 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "((byte)uVar12 & 0x1f)" (( "(") (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar12")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "(uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &\n                   ~(uint)(-1L << ((byte)uVar12 & 0x3f))" (binary_expression "(uint)param_2[0xe] >> ((byte)uVar10 & 0x1f)" (cast_expression "(uint)param_2[0xe]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]"))) (>> ">>") (parenthesized_expression "((byte)uVar10 & 0x1f)" (( "(") (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar10")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (unary_expression "~(uint)(-1L << ((byte)uVar12 & 0x3f))" (~ "~") (call_expression "(uint)(-1L << ((byte)uVar12 & 0x3f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(-1L << ((byte)uVar12 & 0x3f))" (( "(") (binary_expression "-1L << ((byte)uVar12 & 0x3f)" (number_literal "-1L") (<< "<<") (parenthesized_expression "((byte)uVar12 & 0x3f)" (( "(") (binary_expression "(byte)uVar12 & 0x3f" (cast_expression "(byte)uVar12" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar12")) (& "&") (number_literal "0x3f")) () ")"))) () ")"))))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (long)uVar11)" (( "(") (binary_expression "0 < (long)uVar11" (number_literal "0") (< "<") (cast_expression "(long)uVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar11"))) () ")")) (; ";")) (expression_statement "param_2[0xf] = uVar10;" (assignment_expression "param_2[0xf] = uVar10" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "fVar17 = fVar16;" (assignment_expression "fVar17 = fVar16" (identifier "fVar17") (= "=") (identifier "fVar16")) (; ";")) (if_statement "if (uVar13 <= uVar15) goto LAB_00295a2e;" (if "if") (parenthesized_expression "(uVar13 <= uVar15)" (( "(") (binary_expression "uVar13 <= uVar15" (identifier "uVar13") (<= "<=") (identifier "uVar15")) () ")")) (goto_statement "goto LAB_00295a2e;" (goto "goto") (statement_identifier "LAB_00295a2e") (; ";"))) (} "}")))) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x34)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x34)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x34" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;\n      }" ({ "{") (expression_statement "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;" (assignment_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17" (pointer_expression "*(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4)" (( "(") (binary_expression "param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x38)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x38)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x38" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "fVar17")) (; ";")) (} "}"))) (expression_statement "param_4 = (double *)((long)param_4 + param_2[6]);" (assignment_expression "param_4 = (double *)((long)param_4 + param_2[6])" (identifier "param_4") (= "=") (cast_expression "(double *)((long)param_4 + param_2[6])" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_4 + param_2[6])" (( "(") (binary_expression "(long)param_4 + param_2[6]" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) () ")")))) (; ";")) (expression_statement "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_5 = param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (= "=") (binary_expression "param_5 + *(long *)(param_1 + 0x340) * 4" (identifier "param_5") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar14 != param_3)" (( "(") (binary_expression "lVar14 != param_3" (identifier "lVar14") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_002953b8:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\n  }" (statement_identifier "LAB_002953b8") (: ":") (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return;\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;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (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 */

void function_1(type_1 *image,type_2 *quantum_info,type_3 var_11,type_4 *var_13
                       ,type_5 *var_9,type_6 *exception)

{
  type_7 var_14;
  type_8 *pPVar2;
  double var_15;
  type_9 uVar4;
  double var_28;
  double var_29;
  double var_16;
  type_5 QVar8;
  double var_23;
  double var_25;
  type_4 *var_8;
  type_3 var_10;
  type_10 var_4;
  size_t var_30;
  type_10 var_31;
  type_11 var_32;
  type_10 var_33;
  long var_1;
  float var_19;
  float fVar19;
  double var_24;
  type_5 QVar21;
  float pixel;
  long var_34;
  
  var_25 = DAT_0042ffc8;
  var_23 = DAT_0042ffc0;
  QVar8 = DAT_0042ffb4;
  var_16 = DAT_00404930;
  var_15 = DAT_00404920;
  var_19 = var_20;
  var_29 = DAT_003f9608;
  var_28 = DAT_003f9600;
  var_24 = DAT_003f95f8;
  var_34 = *(long *)(var_1 + 0x28);
  if (image->colorspace != var_2) {
    var_3
              (exception,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,ImageError,
               "ColorSeparatedImageRequired","`%s\'",image->filename);
    goto LAB_002953b8;
  }
  var_4 = quantum_info->depth;
  if (var_4 == 0x18) {
    if (quantum_info->format == var_5) {
      if (0 < (long)var_11) {
        var_10 = 0;
        do {
          var_8 = var_6(quantum_info,var_13,&pixel);
          if (image->channel_map[3].traits != var_7) {
            var_9[image->channel_map[3].offset] = pixel;
          }
          var_13 = var_8 + quantum_info->pad;
          var_9 = var_9 + image->number_channels;
          var_10 = var_10 + 1;
        } while (var_10 != var_11);
      }
      goto LAB_002953b8;
    }
LAB_00295582:
    if (0 < (long)var_11) {
      pPVar2 = image->channel_map;
      var_14 = pPVar2[3].traits;
      var_10 = 0;
      do {
        if (quantum_info->endian == var_12) {
          var_32 = (type_11)var_13[3] << 0x18 | (type_11)var_13[1] << 8 | (type_11)var_13[2] << 0x10 | (type_11)*var_13;
        }
        else {
          var_32 = (type_11)var_13[2] << 8 | (type_11)var_13[3] | (type_11)var_13[1] << 0x10 | (type_11)*var_13 << 0x18;
        }
        if (var_14 != var_7) {
          var_9[pPVar2[3].offset] = (float)((double)var_32 / var_15);
        }
        var_13 = var_13 + quantum_info->pad + 4;
        var_9 = var_9 + image->number_channels;
        var_10 = var_10 + 1;
      } while (var_10 != var_11);
    }
    goto LAB_002953b8;
  }
  if (var_4 < 0x19) {
    if (var_4 == 8) {
      if (0 < (long)var_11) {
        pPVar2 = image->channel_map;
        var_14 = pPVar2[3].traits;
        var_10 = 0;
        do {
          if (var_14 != var_7) {
            var_9[pPVar2[3].offset] = (float)((double)*var_13 * var_16);
          }
          var_13 = var_13 + quantum_info->pad + 1;
          var_9 = var_9 + image->number_channels;
          var_10 = var_10 + 1;
        } while (var_11 != var_10);
      }
      goto LAB_002953b8;
    }
    if (var_4 == 0x10) {
      if (quantum_info->format == var_5) {
        if (0 < (long)var_11) {
          var_10 = 0;
          do {
            if (quantum_info->endian == var_12) {
              uVar4 = *(type_9 *)var_13;
            }
            else {
              uVar4 = var_17((char)*(type_9 *)var_13,*(type_12 *)((long)var_13 + 1));
            }
            var_19 = var_18(uVar4);
            if (image->channel_map[3].traits != var_7) {
              var_9[image->channel_map[3].offset] = var_19 * var_20;
            }
            var_13 = (type_4 *)((long)var_13 + quantum_info->pad + 2);
            var_9 = var_9 + image->number_channels;
            var_10 = var_10 + 1;
          } while (var_10 != var_11);
        }
      }
      else if (0 < (long)var_11) {
        pPVar2 = image->channel_map;
        var_14 = pPVar2[3].traits;
        var_10 = 0;
        do {
          if (quantum_info->endian == var_12) {
            uVar4 = *(type_9 *)var_13;
          }
          else {
            uVar4 = var_17((char)*(type_9 *)var_13,*(type_12 *)((long)var_13 + 1));
          }
          if (var_14 != var_7) {
            var_9[pPVar2[3].offset] = (float)uVar4;
          }
          var_13 = (type_4 *)((long)var_13 + quantum_info->pad + 2);
          var_9 = var_9 + image->number_channels;
          var_10 = var_10 + 1;
        } while (var_11 != var_10);
      }
      goto LAB_002953b8;
    }
LAB_0029592c:
    var_33 = 0;
    if (var_4 != 0) goto LAB_002953f9;
  }
  else {
    if (var_4 == 0x20) {
      if (quantum_info->format == var_5) {
        if (0 < (long)var_11) {
          var_10 = 0;
          do {
            if (quantum_info->endian == var_12) {
              var_19 = *(float *)var_13;
            }
            else {
              var_19 = (float)var_21(var_22((type_9)(((type_10)*var_13 << 0x18) >> 0x10) |
                                                (type_9)*(type_13 *)((long)var_13 + 1),
                                                *(type_13 *)((long)var_13 + 2)),*(type_13 *)((long)var_13 + 3));
            }
            var_24 = ((double)var_19 - quantum_info->minimum) * quantum_info->scale;
            QVar21 = QVar8;
            if ((var_23 <= var_24) && (QVar21 = DAT_0042ffb8, var_24 <= var_25)) {
              QVar21 = (type_5)var_24;
            }
            if (image->channel_map[3].traits != var_7) {
              var_9[image->channel_map[3].offset] = QVar21;
            }
            var_13 = (type_4 *)((long)var_13 + quantum_info->pad + 4);
            var_9 = var_9 + image->number_channels;
            var_10 = var_10 + 1;
          } while (var_10 != var_11);
        }
        goto LAB_002953b8;
      }
      goto LAB_00295582;
    }
    if (var_4 != 0x40) goto LAB_0029592c;
    if (quantum_info->format == var_5) {
      if (0 < (long)var_11) {
        var_10 = 0;
        do {
          if (quantum_info->endian == var_12) {
            var_24 = *(double *)var_13;
          }
          else {
            var_24 = (double)var_26(var_27((uint6)(((type_10)*var_13 << 0x38) >> 0x10) |
                                               (uint6)(((type_10)*(type_13 *)((long)var_13 + 1) << 0x30) >>
                                                      0x10) |
                                               (uint6)(((type_10)*(type_13 *)((long)var_13 + 2) << 0x28) >>
                                                      0x10) |
                                               (uint6)(((type_10)*(type_13 *)((long)var_13 + 3) << 0x20) >>
                                                      0x10) |
                                               (uint6)(((type_10)*(type_13 *)((long)var_13 + 4) << 0x18) >>
                                                      0x10) | (uint6)*(type_13 *)((long)var_13 + 5),
                                               *(type_13 *)((long)var_13 + 6)),*(type_13 *)((long)var_13 + 7));
          }
          if (image->channel_map[3].traits != var_7) {
            var_9[image->channel_map[3].offset] =
                 (float)(quantum_info->scale * (var_24 - quantum_info->minimum));
          }
          var_13 = (type_4 *)((long)var_13 + quantum_info->pad + 8);
          var_9 = var_9 + image->number_channels;
          var_10 = var_10 + 1;
        } while (var_10 != var_11);
      }
      goto LAB_002953b8;
    }
LAB_002953f9:
    if (0x40 < var_4) {
      var_4 = 0;
    }
    var_33 = (2L << ((char)var_4 - 1U & 0x3f)) - 1;
  }
  if (0 < (long)var_11) {
    var_10 = 0;
    do {
      var_30 = quantum_info->depth;
      if ((long)var_30 < 1) {
        var_32 = 0;
LAB_00295a2e:
        var_15 = DAT_003fa390;
        if (var_28 <= (double)var_33) {
          var_15 = var_29 / (double)var_33;
        }
        fVar19 = (float)((double)var_32 * var_15 * var_24);
      }
      else {
        var_4 = (quantum_info->state).bits;
        var_32 = 0;
        do {
          if (var_4 == 0) {
            (quantum_info->state).pixel = (type_11)*var_13;
            var_13 = var_13 + 1;
            var_4 = 8;
          }
          var_31 = var_30;
          if (var_4 <= var_30) {
            var_31 = var_4;
          }
          var_30 = var_30 - var_31;
          var_4 = var_4 - var_31;
          var_32 = var_32 << ((type_13)var_31 & 0x1f) |
                   (quantum_info->state).pixel >> ((type_13)var_4 & 0x1f) &
                   ~(type_11)(-1L << ((type_13)var_31 & 0x3f));
        } while (0 < (long)var_30);
        (quantum_info->state).bits = var_4;
        fVar19 = var_19;
        if (var_32 <= var_33) goto LAB_00295a2e;
      }
      if (image->channel_map[3].traits != var_7) {
        var_9[image->channel_map[3].offset] = fVar19;
      }
      var_13 = var_13 + quantum_info->pad;
      var_9 = var_9 + image->number_channels;
      var_10 = var_10 + 1;
    } while (var_10 != var_11);
  }
LAB_002953b8:
  if (var_34 == *(long *)(var_1 + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_35();
}


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

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

void MASKED(long param_1,ulong *param_2,long param_3,double *param_4,long param_5,
                 undefined8 param_6)

{
  int iVar1;
  double dVar2;
  ushort uVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  long lVar9;
  ulong uVar10;
  ulong uVar11;
  ulong uVar12;
  uint uVar13;
  long lVar14;
  ulong uVar15;
  long in_FS_OFFSET;
  float fVar16;
  float fVar17;
  double dVar18;
  undefined4 local_44;
  long local_40;
  
  dVar8 = DAT_0042ffc8;
  dVar7 = DAT_0042ffc0;
  fVar17 = DAT_0042ffb4;
  dVar6 = DAT_00404930;
  dVar2 = DAT_00404920;
  fVar16 = _DAT_003fa400;
  dVar5 = DAT_003f9608;
  dVar4 = DAT_003f9600;
  dVar18 = DAT_003f95f8;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (*(int *)(param_1 + 4) != 2) {
    ThrowMagickException
              (param_6,"MagickCore/quantum-import.c","ImportBlackQuantum",0x528,0x1d1,
               "ColorSeparatedImageRequired","`%s\'",param_1 + 0x3f8);
    goto LAB_002953b8;
  }
  uVar11 = *param_2;
  if (uVar11 == 0x18) {
    if ((int)param_2[2] == 1) {
      if (0 < param_3) {
        lVar14 = 0;
        do {
          lVar9 = FUN_0028ddb2(param_2,param_4,&local_44);
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
            *(undefined4 *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = local_44;
          }
          param_4 = (double *)(lVar9 + param_2[6]);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar14 = lVar14 + 1;
        } while (lVar14 != param_3);
      }
      goto LAB_002953b8;
    }
LAB_00295582:
    if (0 < param_3) {
      lVar14 = *(long *)(param_1 + 0x360);
      iVar1 = *(int *)(lVar14 + 0x34);
      lVar9 = 0;
      do {
        if ((int)param_2[0xc] == 1) {
          uVar13 = (uint)*(byte *)((long)param_4 + 3) << 0x18 |
                   (uint)*(byte *)((long)param_4 + 1) << 8 |
                   (uint)*(byte *)((long)param_4 + 2) << 0x10 | (uint)*(byte *)param_4;
        }
        else {
          uVar13 = (uint)*(byte *)((long)param_4 + 2) << 8 |
                   (uint)*(byte *)((long)param_4 + 3) |
                   (uint)*(byte *)((long)param_4 + 1) << 0x10 | (uint)*(byte *)param_4 << 0x18;
        }
        if (iVar1 != 0) {
          *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)((double)uVar13 / dVar2);
        }
        param_4 = (double *)((long)param_4 + param_2[6] + 4);
        param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
        lVar9 = lVar9 + 1;
      } while (lVar9 != param_3);
    }
    goto LAB_002953b8;
  }
  if (uVar11 < 0x19) {
    if (uVar11 == 8) {
      if (0 < param_3) {
        lVar14 = *(long *)(param_1 + 0x360);
        iVar1 = *(int *)(lVar14 + 0x34);
        lVar9 = 0;
        do {
          if (iVar1 != 0) {
            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) =
                 (float)((double)*(byte *)param_4 * dVar6);
          }
          param_4 = (double *)((long)param_4 + param_2[6] + 1);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar9 = lVar9 + 1;
        } while (param_3 != lVar9);
      }
      goto LAB_002953b8;
    }
    if (uVar11 == 0x10) {
      if ((int)param_2[2] == 1) {
        if (0 < param_3) {
          lVar14 = 0;
          do {
            if ((int)param_2[0xc] == 1) {
              uVar3 = *(ushort *)param_4;
            }
            else {
              uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));
            }
            fVar16 = (float)FUN_0028db24(uVar3);
            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =
                   fVar16 * _DAT_003fa400;
            }
            param_4 = (double *)((long)param_4 + param_2[6] + 2);
            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
            lVar14 = lVar14 + 1;
          } while (lVar14 != param_3);
        }
      }
      else if (0 < param_3) {
        lVar14 = *(long *)(param_1 + 0x360);
        iVar1 = *(int *)(lVar14 + 0x34);
        lVar9 = 0;
        do {
          if ((int)param_2[0xc] == 1) {
            uVar3 = *(ushort *)param_4;
          }
          else {
            uVar3 = CONCAT11(*(byte *)param_4,*(byte *)((long)param_4 + 1));
          }
          if (iVar1 != 0) {
            *(float *)(param_5 + *(long *)(lVar14 + 0x38) * 4) = (float)uVar3;
          }
          param_4 = (double *)((long)param_4 + param_2[6] + 2);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar9 = lVar9 + 1;
        } while (param_3 != lVar9);
      }
      goto LAB_002953b8;
    }
LAB_0029592c:
    uVar15 = 0;
    if (uVar11 != 0) goto LAB_002953f9;
  }
  else {
    if (uVar11 == 0x20) {
      if ((int)param_2[2] == 1) {
        if (0 < param_3) {
          lVar14 = 0;
          do {
            if ((int)param_2[0xc] == 1) {
              fVar16 = *(float *)param_4;
            }
            else {
              fVar16 = (float)CONCAT31(CONCAT21((ushort)(((ulong)*(byte *)param_4 << 0x18) >> 0x10)
                                                | (ushort)*(byte *)((long)param_4 + 1),
                                                *(byte *)((long)param_4 + 2)),
                                       *(byte *)((long)param_4 + 3));
            }
            dVar18 = ((double)fVar16 - (double)param_2[3]) * (double)param_2[5];
            fVar16 = fVar17;
            if ((dVar7 <= dVar18) && (fVar16 = DAT_0042ffb8, dVar18 <= dVar8)) {
              fVar16 = (float)dVar18;
            }
            if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
              *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar16;
            }
            param_4 = (double *)((long)param_4 + param_2[6] + 4);
            param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
            lVar14 = lVar14 + 1;
          } while (lVar14 != param_3);
        }
        goto LAB_002953b8;
      }
      goto LAB_00295582;
    }
    if (uVar11 != 0x40) goto LAB_0029592c;
    if ((int)param_2[2] == 1) {
      if (0 < param_3) {
        lVar14 = 0;
        do {
          if ((int)param_2[0xc] == 1) {
            dVar18 = *param_4;
          }
          else {
            dVar18 = (double)CONCAT71(CONCAT61((uint6)(((ulong)*(byte *)param_4 << 0x38) >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 1) << 0x30)
                                                      >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 2) << 0x28)
                                                      >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 3) << 0x20)
                                                      >> 0x10) |
                                               (uint6)(((ulong)*(byte *)((long)param_4 + 4) << 0x18)
                                                      >> 0x10) | (uint6)*(byte *)((long)param_4 + 5)
                                               ,*(byte *)((long)param_4 + 6)),
                                      *(byte *)((long)param_4 + 7));
          }
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
            *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) =
                 (float)((double)param_2[5] * (dVar18 - (double)param_2[3]));
          }
          param_4 = (double *)((long)param_4 + param_2[6] + 8);
          param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
          lVar14 = lVar14 + 1;
        } while (lVar14 != param_3);
      }
      goto LAB_002953b8;
    }
LAB_002953f9:
    if (0x40 < uVar11) {
      uVar11 = 0;
    }
    uVar15 = (2L << ((char)uVar11 - 1U & 0x3f)) - 1;
  }
  if (0 < param_3) {
    lVar14 = 0;
    do {
      uVar11 = *param_2;
      if ((long)uVar11 < 1) {
        uVar13 = 0;
LAB_00295a2e:
        dVar2 = DAT_003fa390;
        if (dVar4 <= (double)uVar15) {
          dVar2 = dVar5 / (double)uVar15;
        }
        fVar17 = (float)((double)uVar13 * dVar2 * dVar18);
      }
      else {
        uVar10 = param_2[0xf];
        uVar13 = 0;
        do {
          if (uVar10 == 0) {
            *(uint *)(param_2 + 0xe) = (uint)*(byte *)param_4;
            param_4 = (double *)((long)param_4 + 1);
            uVar10 = 8;
          }
          uVar12 = uVar11;
          if (uVar10 <= uVar11) {
            uVar12 = uVar10;
          }
          uVar11 = uVar11 - uVar12;
          uVar10 = uVar10 - uVar12;
          uVar13 = uVar13 << ((byte)uVar12 & 0x1f) |
                   (uint)param_2[0xe] >> ((byte)uVar10 & 0x1f) &
                   ~(uint)(-1L << ((byte)uVar12 & 0x3f));
        } while (0 < (long)uVar11);
        param_2[0xf] = uVar10;
        fVar17 = fVar16;
        if (uVar13 <= uVar15) goto LAB_00295a2e;
      }
      if (*(int *)(*(long *)(param_1 + 0x360) + 0x34) != 0) {
        *(float *)(param_5 + *(long *)(*(long *)(param_1 + 0x360) + 0x38) * 4) = fVar17;
      }
      param_4 = (double *)((long)param_4 + param_2[6]);
      param_5 = param_5 + *(long *)(param_1 + 0x340) * 4;
      lVar14 = lVar14 + 1;
    } while (lVar14 != param_3);
  }
LAB_002953b8:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

